我在FloatBuffer中有一堆浮点数据,需要将其写入文件(无需花费三分钟的时间)。当前,DataOutputStream用于将FloatBuffer元素逐个元素写入文件。太慢了最好是,我想使用FileChannel,但是遇到了一个麻烦,因为看来FloatBuffer无法转换为ByteBuffer,并且字节是FileChannel写入数据所需的字节。

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

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

最佳答案

您可以创建一个FloatBuffer用来写入ByteBuffer,然后使用FileChannel,然后将该ByteBuffer.asFloatBuffer写入该FloatBuffer中,但是您当前正在执行该操作,然后编写出ByteBuffer,然后将包含相关信息?

就我个人而言,我总是觉得java.nio相当混乱,但这似乎应该可以解决...

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


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

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



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

10-07 13:21
查看更多