java将int数组(图像数据)写入文件的最佳方式是什么
我有一个大的int数组,包含格式为ARGB的图像数据(alpha、R、G和B通道,每个通道1字节)。我想将其保存到onPause()
中的文件中,以便在应用程序重新启动时重新加载它。你认为最好的方法是什么
我找到了以下方法:
手动将int数组转换为字节数组(请参见here),然后使用
FileOutputStream
输出字节数组将数组包装成
java.nio.IntBuffer
,然后使用java.io.ObjectOutputStream.writeObject()
将对象写入文件使用
java.io.ObjectOutputStream.writeInt()
一次编写一个元素
所有这些方法似乎都很浪费,所以可能还有另一种更好的方法。甚至可能是一种使用图像压缩来减小文件大小的方法
# 1 楼答案
这些都不是。其中一些甚至毫无意义
然后根据需要多次调用
dos.writeInt()
,然后关闭dos
。缓冲液可以消除大部分疼痛或者创建一个
IntBuffer
并使用FileChannel.write()
,但我一直无法弄清楚在缺少IntBuffer.asByteBuffer()
方法的情况下该如何工作。或者创建一个ByteBuffer
,通过asIntBuffer()
将其作为一个IntBuffer
,放入数据,然后调整ByteBuffer
的长度,这是API的另一个缺失部分,然后再次使用FileChannel.write(ByteBuffer)