가능한 중복 :
do searching in a very big ARPA file in a very short time in java자바에서 특정 형식의 매우 큰 파일의 문자열을 검색하려면 어떻게해야합니까?
내 파일의 형식 :
N- 그램 1 = 19
N- 그램 \
\ 데이터 2 = 234
,536,913 63,210N- 그램 3 = 1,013
\ 1 g :
puluh -1.7132 -3.8008
사투 -1.9782 -3.8368
\ 2 g :
-1.5403 dalam 듀아 -1.0560
-3.1626 달램 이니 0.0000
\ 3 그램 :
-1.8726 ITU 단 TIGA
-1.9654 ITU 단 용 다운로드
당신은 내가 N- 그램 1 라인의 번호를 가지고 볼 수 있듯이 \ 끝 \
, 2 및 3. 전체 파일을 읽을 필요가 없습니다. 입력 문자열이 1 단어 문자열 인 경우 프로그램은 \ 1-grams : 부분 만 검색 할 수 있습니다. 입력 문자열이 2 단어 문자열 인 경우 프로그램은 \ 2-grams : part 등을 검색 할 수 있습니다. 마지막으로 프로그램에서 파일의 입력 문자열을 찾으면 문자열의 왼쪽과 오른쪽에있는 두 개의 숫자를 반환해야합니다. 또한 파일의 각 부분이 정렬되었다고 말해야합니다. 파일을 완전히 읽을 필요가 없으며 색인 파일을 사용하여 문제를 해결할 수 없다고 확신합니다. 이 방법은 많은 시간을 필요로하며 제 강사는 큰 파일을 검색하는 데 1 분 이내에 완료해야한다고 말했습니다. 가장 좋은 방법은 파일의 바이트가 아닌 특정 줄로 건너 뛰는 방법을 찾는 것이지만 어떻게 할 수 있는지 알지 못합니다. 누군가 내 문제를 해결하도록 도울 수 있다면 좋을 것입니다.
내 파일은 거의 800MB입니다. 나는 BufferedReader를 사용하는 것이 파일을 매우 빨리 읽을 수있는 좋은 방법이라는 것을 발견했다. 그러나 큰 파일을 읽고 줄 단위로 배열에 넣으면 30 분 이상 걸린다.
이 숙제가 있습니까? (당신은 강의를 언급합니다). 지금까지 뭐 해봤 어? 질문을 편집하고 지금까지 시도한 코드 중 일부를 보여줄 수 있습니까? – jmq
이것은 http://stackoverflow.com/questions/5127640/do-searching-in-a-very-big-arpa-file-in-a-very-short-time-in-java와 동일한 질문입니다. – andersoj
음 전에는 잘 알고있는 구조와 바이트를 가지고 있지 않으면 파일 전체를 스캔해야합니다. 어떤 식 으로든 파일의 바이트 위치를 기록하고 파일 상단에 색인을 붙일 수 있다면 AFAIK는 없습니다. –