문제

Java의 큰 파일에서 간단한 GREP 및 기타 조작을 수행해야합니다. 나는 Java Nio 유틸리티에 익숙하지 않지만 그것이 내가 사용해야 할 것이라고 가정합니다. 대형 파일을 읽고 쓰는 데 어떤 리소스 또는 유용한 팁이 있습니까? 또한 SWT 응용 프로그램을 작업 중이며 GUI의 텍스트 영역 내에 해당 데이터의 일부를 표시해야합니다.

도움이 되었습니까?

해결책

java.io.RandomAccessFile 파일 포인터 오프셋에 긴 사용하므로 대처할 수 있어야합니다. 그러나 한 번에 청크를 읽어야합니다. 그렇지 않으면 오버 헤드가 높아집니다. FileInputStream 비슷하게 작동합니다.

Java Nio는 너무 어렵지 않아야합니다. 당신은 엉망이 될 필요가 없습니다 Selectors 또는 이와 유사합니다. 실제로 JDK7 이전에는 파일로 선택할 수 없습니다. 그러나 파일 매핑을 피하십시오. 미혼이 없으므로 많이하려고하면 32 비트 시스템에서 주소 공간이 부족하거나 다른 문제가 발생합니다 (NIO는 GC를 호출하려고하지만 약간의 해킹입니다).

다른 팁

만약 당신이하고있는 모든 것이 전체 파일을 한 번에 한 번에 덩어리 씩 읽고, 특별 처리없이, Nio 및 java.io.RandomAccessFile 아마도 과잉 일 것입니다. 파일의 내용을 한 번에 블록 씩 읽고 처리합니다. a를 사용하는지 확인하십시오 BufferedInputStream 또는 BufferedReader.

수행하는 작업을 수행하기 위해 전체 파일을 읽고 한 번에 하나의 파일 만 읽으면 NIO로부터 거의 혜택을받지 못할 것입니다.

어쩌면 약간의 주제 : VFS Apache에 의해. 원래 응용 프로그램의 관점에서 파일 시스템 외관 뒤에있는 FTP-HTTP-File- 이신 시스템을 숨기는 라이브러리가되어야합니다. 검색, 읽기, 복사 등을 위해 큰 파일 (FTP를 통해)에 액세스하는 데 긍정적 인 경험이 있기 때문에 여기에 언급합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top