我有一个 10MB 的二进制文件。我需要以不同大小的块(例如 300、273 字节)读取它。对于阅读,我使用FileChannel
and ByteBuffer
。现在,对于每次阅读迭代,我都会分配新ByteBuffer
的大小,我需要阅读。
是否可以只为 ByteBuffer 分配一次(比如说 200 KB)并读入它(300、273 字节等)?我不会一次读取超过 200KB 的内容。必须读取整个文件。
UPD
public void readFile (FileChannel fc, int amountOfBytesToRead)
{
ByteBuffer bb= ByteBuffer.allocate(amountOfBytesToRead);
fc.read(bb);
bb.flip();
// do something with bytes
bb = null;
}
由于内存限制,我无法一次读取整个文件。这就是我分块阅读的原因。效率也很重要(这就是为什么我不想使用我当前的方法进行多次分配)。谢谢