2017-01-15 10 views
0

매우 큰 (> 100GB) ASCII 코드 텍스트 파일에서 데이터에 액세스하려고합니다. 이 파일에는 주로 좌표 (소수점을 포함한 16 자리 부동 소수점) 및 기타 사소한 정보 (이름 등)가 들어 있습니다.Java RandomAccessFile의 메모리 사용량

따라서 RandomAccessFile을 사용하여 많은 양의 데이터를 메모리에로드하지 않아도됩니다. (예를 들어, 데이터 라인을 속도를 높이기 위해 메모리에 캐시 할 수 있지만 나중에 저장하고 시간이 무한대가 아닌 한 여기서 문제가되지 않는다고 가정하십시오.)

질문 : 탐색 및 읽기 방법으로 인해 RandomAccessFile이 엄청난 양의 데이터를 메모리에로드하지 않는다고 가정 할 수 있습니까?

대단히 감사합니다.

+0

대답했다. 이것을 여러 번 빠르게 찾을 수 있으며 유일한 메모리 비용은'BufferedInputStream'의 버퍼입니다. – EJP

+0

@EJP 그리고 대략 그 비용은 얼마입니까? 감사! –

답변

0

당신 말이 맞습니다. RandomAccessFile은 기본적으로 현재 파일 외에도 많은 내부 상태가없는 실제 파일에 대한 래퍼입니다. 모든 읽기/쓰기 메소드를 사용하려면 데이터를로드해야하는 자체 배열을 제공해야합니다.

또한,이 질문은 이미 데이터가 읽기 전용 인 경우는`BufferedInputStream` 감싸`DataInputStream`를 사용해야합니다 Java : Read last n lines of a HUGE file Does RandomAccessFile in java read entire file in memory?

+0

답변 중 하나에서 모호하게 언급되었습니다. 방금 확인을 원했어! 감사. –