2012-04-15 3 views
0

특정 바이트 수만큼 파일의 특정 지점에서 파일을 읽으려고합니다. _offSet 및 _size 유형이 "긴"입니다Java에서 RandomAccessFile을 사용하여 파일에서 "긴"바이트 수를 읽는 방법

RandomAccessFile randomAccessFile = new RandomAccessFile(_file, "r"); randomAccessFile.seek(_offSet);
randomAccessFile.read(buffer, 0, _size);

.

문제는 읽기 방법이 "int"만 사용한다는 것입니다. "seek"을 사용하여 오프셋 문제를 극복했습니다. 읽는 바이트 수를 어떻게 극복합니까?

+0

대기. 실제로 20 억 바이트 이상을 읽을 계획입니까? –

+0

...하지만 한 번 호출해야합니까? ;) –

답변

1

한 번에 2GB 이상을 읽으면서 볼 수있는 장점은 없습니다 (단순함 제외). 여러 통화를 사용하여 2GB 이상을 읽을 수 있습니다.

+0

Java의 배열에는 2^31-1 개 이상의 요소를 넣을 수 없습니다. –

+0

또는 ByteBuffer하지만 컬렉션이나 배열에서 여러 바이트 [] 또는 ByteBuffer를 읽을 수 있습니다. –

+0

내 말은, 공정하기 위해서는 내부적으로 여러 개의 ByteBuffer 또는 배열을 사용하는 사용자 정의 목록 또는 버퍼 구현을 설계 할 수 있지만'long '으로 색인 할 수있는 API를 노출한다는 것입니다. –

0

어디서 읽을 수 있습니까? 어쨌든 커다란 배열을 선언 할 수는 없습니다. 문제가 존재하지 않습니다.

+0

여러 배열로 읽을 계획입니다. – choppy

+0

@choppy 아무런 변화가 없습니다. 각 배열은 Java에 의해 2^31 바이트, 즉 최대 정수로 제한되므로 동일한 제한을 갖는'read()'는 여전히 문제가되지 않습니다. – EJP

관련 문제