将FloatBuffer或Float(float)数组写入Java文件的最快方法

时间:2011-07-05 18:53:08

标签: java file floating-point buffer filechannel

我在FloatBuffer中有一堆浮点数据需要写入文件(不需要花费三分钟)。目前,DataOutputStream用于按元素将FloatBuffer元素写入文件。这很慢。最好,我想使用FileChannel,但我遇到了障碍,因为看起来FloatBuffer无法转换为ByteBuffer而字节是{{1}需要才能写入数据。

我可以轻松使用数组,而不是使用FileChannel作为我的数据源。但我不能轻易使用ByteBuffer /数组。

对此问题的任何见解都将非常感激。感谢。

1 个答案:

答案 0 :(得分:3)

您可以创建一个FloatBuffer用于写入ByteBuffer,然后使用FileChannel,而不是使用ByteBuffer.asFloatBuffer启动 off 写下FloatBuffer然而你当前正在这样做,然后写出ByteBuffer然后会包含相关信息?

就我个人而言,我总是发现java.nio相当令人困惑,但感觉它可能应该工作......

编辑:另一位用户试过这个,发现它无法正常工作:

  

但是,asFloatBuffer()无效,因为hasArray()将为false。简而言之,以下操作不起作用(allocateallocateDirect都不起作用):

ByteBuffer.allocate(amount * 4).asFloatBuffer().asArray()

不幸的是,我现在没有时间研究替代品。