버퍼 된 판독기는 파일을 순차적으로 읽는 것을 의미합니다. 당신이 찾고있는 것은 java.io.RandomAccessFile이며, seek()
을 사용하면 파일에서 원하는 위치로 이동할 수 있습니다.
랜덤 액세스 리더
그래서 다음과 같이 구현된다 :
"rw"
try{
String fileName = "c:/myraffile.txt";
File file = new File(fileName);
RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.readChar();
raf.seek(0);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
는 detailed here 인 모드 특성이다.
순차 액세스 판독기가 이와 같이 설정되는 이유는 버퍼를 구현할 수 있고 발밑에서 내용을 변경할 수 없기 때문입니다. 예를 들어, 버퍼링 된 판독기에 제공된 파일 판독기는 해당 버퍼 판독기에서만 작동해야합니다. 하나의 리더가 파일 리더에서 자신의 위치를 전진시키면서 다른 리더가 다른 리더를 사용하기를 원했을 때 일관성없는 작업을 수행 할 수있는 다른 위치가 있고 그 위치가 미확인 위치에있을 수 있습니다.
더 자세히 설명해 주시겠습니까? 30MB의 파일이 있는데 메모리에 모두로드 할 수 없습니다. 필자는 데이터를 정렬했으며 파일에서 직접 이진 검색을 수행하려고합니다. 이를 위해 무작위로 찾아야합니다. –
어쨌든, 디스크에서 무작위로 탐색하면 종종 이진 검색의 로그 성능을 완전히 망칠 수 있습니다. 어쨌든, 디스크에서 무작위로 검색하면 종종 이진 검색의 로그 성능이 손상됩니다. 몇 가지 대안은 1) 순차적 액세스 (예, 디스크에서 순차 검색은 2 진 검색보다 빠를 수 있음) 또는 2) B-tree http://en.wikipedia.org/wiki/와 같은 혼합 된 접근 방식입니다. B 트리 이러한 힌트가 충분하지 않은 경우 질문 대신 별도의 질문으로 게시 할 수 있습니다 (제발 ping에 대한 질문의 링크와 함께 여기에 의견을 게시하십시오) – Davide