如何将 Java FloatBuffer(或任何 Buffer)保存到文件
我有一个已知大小的 FloatBuffer,只想将数据转储到文件(二进制)以便在我的应用程序外部进行检查。 做到这一点最简单的方法是什么?
I have a FloatBuffer of known size and just want to dump the data to a file (in binary) for inspection outside my app. What's the easiest way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
二进制输出更新:
文本输出:
既然您希望可以查看它,我假设您需要一个文本文件。 您将需要使用 PrintStream。
没有时间发布完整的原始/二进制(非文本)版本。 如果您想这样做,请使用 FileOutputStream,获取FileChannel,并直接编写 FloatBuffer (因为它是ByteBuffer)
UPDATE FOR BINARY OUTPUT:
TEXT OUTPUT:
Since you want this to be viewable I assume you want a text file. You'll want to use a PrintStream.
Didn't have time to post a full raw/binary (non-text) version of this. If you want to do that use a FileOutputStream, get the FileChannel, and directly write the FloatBuffer (since it's a ByteBuffer)
假设您希望数据为二进制:
从
ByteBuffer
开始。 调用asFloatBuffer
获取您的FloatBuffer
。 当您完成工作后,将ByteBuffer
保存到WritableByteChannel
中。如果您已有
FloatBuffer
,则可以使用put
将其从步骤 2 复制到缓冲区中。性能较低但更简单的方法是使用
Float.floatToIntBit
。(显然,请注意字节顺序。)
Asusming you want the data as binary:
Start with a
ByteBuffer
. CallasFloatBuffer
to get yourFloatBuffer
. When you've finished doing your stuff, save theByteBuffer
out to aWritableByteChannel
.If you already have
FloatBuffer
it can be copied into the buffer from step 2 with aput
.A low performance but easier way would be to use
Float.floatToIntBit
.(Watch for endianess, obviously.)
这会迭代缓冲区支持的数组并输出每个浮点数。 只需将文本文件和 floatBuffer 替换为您自己的参数即可。
This iterates through the array backed by your buffer and outputs each float. Just replace the text file and floatBuffer with your own parameters.