我在FloatBuffer
中有一堆浮点数据需要写入文件(不需要花费三分钟)。目前,DataOutputStream
用于按元素将FloatBuffer
元素写入文件。这很慢。最好,我想使用FileChannel
,但我遇到了障碍,因为看起来FloatBuffer
无法转换为ByteBuffer
而字节是{{1}需要才能写入数据。
我可以轻松使用数组,而不是使用FileChannel
作为我的数据源。但我不能轻易使用ByteBuffer /数组。
对此问题的任何见解都将非常感激。感谢。
答案 0 :(得分:3)
您可以创建一个FloatBuffer
用于写入ByteBuffer
,然后使用FileChannel
,而不是使用ByteBuffer.asFloatBuffer
启动 off 写下FloatBuffer
然而你当前正在这样做,然后写出ByteBuffer
然后会包含相关信息?
就我个人而言,我总是发现java.nio相当令人困惑,但感觉它可能应该工作......
编辑:另一位用户试过这个,发现它无法正常工作:
但是,
asFloatBuffer()
无效,因为hasArray()
将为false。简而言之,以下操作不起作用(allocate
和allocateDirect
都不起作用):ByteBuffer.allocate(amount * 4).asFloatBuffer().asArray()
不幸的是,我现在没有时间研究替代品。