2

我有一堆浮点数据FloatBuffer需要写入文件(不需要三分钟)。目前 aDataOutputStream用于将FloatBuffer元素一个元素地写入文件。这很慢。最好,我想使用 a FileChannel,但我遇到了一个障碍,因为它似乎 aFloatBuffer无法转换为 aByteBuffer并且字节是FileChannel写入数据所需要的。

FoatBuffers我可以轻松地使用数组,而不是用作我的数据源。但是我不能轻易地使用 ByteBuffer/array 来代替。

对此问题的任何见解将不胜感激。谢谢。

4

1 回答 1

3

与其从a开始FloatBuffer,您是否可以创建 aByteBuffer用于写入FileChannel,然后使用ByteBuffer.asFloatBuffer,写入其中,FloatBuffer但是您当前正在执行此操作,然后写出ByteBufferwhich 将包含相关信息?

就我个人而言,我一直觉得 java.nio 相当混乱,但这感觉它可能应该工作......

编辑:另一个用户尝试了这个,发现它不起作用:

但是,asFloatBuffer()不会工作,因为hasArray()会是假的。简而言之,以下内容不起作用(既不allocate,也allocateDirect不会起作用):

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

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

于 2011-07-05T18:56:31.720 回答