java - 如何将Java FloatBuffer(或任何Buffer)保存到文件

标签 java file buffer

我有一个已知大小的FloatBuffer,只想将数据转储到文件(二进制)中以在我的应用程序外部进行检查。最简单的方法是什么?

最佳答案

更新二进制输出:

// There are dependencies on how you create your floatbuffer for this to work
// I suggest starting with a byte buffer and using asFloatBuffer() when
// you need it as floats.
// ByteBuffer b = ByteBuffer.allocate(somesize);
// FloatBuffer fb = b.asFloatBuffer();
// There will also be endiance issues when you write binary since
// java is big-endian. You can adjust this with Buffer.order(...)
// b.order(ByteOrder.LITTLE_ENDIAN)
// If you're using a hex-editor you'll probably want little endian output
// since most consumer machines (unless you've got a sparc / old mac) are little


FileOutputStream fos = new FileOutputStream("some_binary_output_file_name");
FileChannel channel = fos.getChannel();

channel.write(byteBufferBackingYourFloatBuffer);

fos.close();


文字输出:
由于您希望此内容可见,因此我假设您需要一个文本文件。您将要使用PrintStream。

// Try-catch omitted for simplicity

PrintStream ps = new PrintStream("some_output_file.txt");
for(int i = 0; i < yourFloatBuffer.capacity(); i++)
{
   // put each float on one line
   // use printf to get fancy (decimal places, etc)
   ps.println(yourFloagBuffer.get(i));
}

ps.close();


没有时间发布完整的原始/二进制(非文本)版本。如果要使用FileOutputStream进行此操作,请获取FileChannel,然后直接编写FloatBuffer(因为它是ByteBuffer

关于java - 如何将Java FloatBuffer(或任何Buffer)保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735600/

相关文章:

Java Mvc 和 hibernate

java - 使用软件包名称中的大写字母构建Cordova Android项目时出错

java - 使用Java将文件作为链接导入到Eclipse项目

c - 如何在写操作之前缓存/缓冲数据

python - 遍历python中的IOString缓冲区

java - Weblogic服务器中的@WebServlet

java - Swing 工作线程 : Inner class vs passing parameter

php - 将目录中的所有文件合并到一个文本文件

file - Jenkins:使用文件操作插件中的当前分支复制到动态目标位置

c++ - OpenCL:从主机到设备缓冲区的并行写入?