10MB のバイナリ ファイルがあります。異なるサイズ (300、273 バイトなど) のチャンクで読み取る必要があります。読むために私はFileChannel
とを使いますByteBuffer
。現在、読み取りの反復ごとに、ByteBuffer
読み取る必要がある新しいサイズを割り当てています。
ByteBuffer に 1 回だけ (たとえば 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;
}
メモリの制約により、ファイル全体を一度に読み取ることができません。そのため、チャンクで読み取りを実行します。効率も非常に重要です (そのため、複数の割り当てで現在のアプローチを使用したくありません)。ありがとう