10MB의 이진 파일이 있습니다. 다른 크기의 청크로 읽어야합니다 (예 : 300, 273 바이트). 독서를 위해 나는 FileChannel
과 ByteBuffer
을 사용한다. 지금은 각 반복 읽기마다 새로운 크기의 ByteBuffer
을 할당합니다.ByteBuffer에 특정 바이트 수 읽기
ByteBuffer에 대해 한 번만 할당 (200KB라고 가정)하고 읽을 수 있습니까 (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;
}
나는 인해 메모리 제약에 한 번에 전체 파일을 읽을 수 없습니다. 그게 제가 독서를하는 이유입니다. 효율성은 또한 매우 중요합니다 (즉, 다중 할당을 통해 현재 접근 방식을 사용하고 싶지 않은 이유입니다). 감사합니다
시도 (코드)는 어디에 있습니까? –
코드가 지금까지 어떻게 보입니까? – Emz
300 바이트, 273 바이트, 그리고 나서 'FileChannel'에서 XYZ 바이트를 읽으 려하지만 ByteBuffer 만 할당하면됩니까? –