我在FloatBuffer
中有一堆浮点数据,需要将其写入文件(无需花费三分钟的时间)。当前,DataOutputStream
用于将FloatBuffer
元素逐个元素写入文件。太慢了最好是,我想使用FileChannel
,但是遇到了一个麻烦,因为看来FloatBuffer
无法转换为ByteBuffer
,并且字节是FileChannel
写入数据所需的字节。
代替使用FoatBuffers
作为数据源,我可以轻松地使用数组。但是我不能轻易地使用ByteBuffer / array。
任何对此问题的见解将不胜感激。谢谢。
最佳答案
您可以创建一个FloatBuffer
用来写入ByteBuffer
,然后使用FileChannel
,然后将该ByteBuffer.asFloatBuffer
写入该FloatBuffer
中,但是您当前正在执行该操作,然后编写出ByteBuffer
,然后将包含相关信息?
就我个人而言,我总是觉得java.nio相当混乱,但这似乎应该可以解决...
编辑:另一个用户尝试了此,并发现它不起作用:
但是,asFloatBuffer()
将不起作用,因为hasArray()
为false。简而言之,以下内容不起作用(allocate
和allocateDirect
都不起作用):
ByteBuffer.allocate(amount * 4).asFloatBuffer().asArray()
不幸的是,我现在没有时间研究替代方案。