我正在尝试将字节数据写入文件并对其进行优化,我想减少写入文件的次数。
目前,我正在使用:
try (RandomAccessFile out = new RandomAccessFile(file, "rw")) {
for(int i = 0; i < totalPkts; i++) {
out.writeInt(data.get(i));
}
}
这工作正常,但由于有很多out.write
电话,所以速度很慢。
因此,我尝试使用 aByteBuffer
来代替:
try (RandomAccessFile out = new RandomAccessFile(file, "rw")) {
ByteBuffer buffer = ByteBuffer.allocate(totalPkts*4); // prevent BufferOverflow
for(int i = 0; i < totalPkts; i++) {
buffer.putInt(data.get(i));
}
out.write(buffer.array());
}
两种方法生成的文件大小不同。该ByteBuffer
文件几乎比正常的输出文件大一 mb。这可以解释为什么差异会说它们不一样。
我尝试使用 DataOutputStream,结果是一样的。使用写入的文件ByteBuffer
仍然比不使用ByteBuffer
.