Java를 사용하여 압축(.gz) 파일에서 검색

Java를 사용하여 압축(.gz) 파일에서 검색

패턴 검색을 수행해야 하는 대용량 파일이 있습니다. GZIPInputStream을 사용할 때 메모리에 있는 파일의 압축을 푼 다음 해당 파일을 검색해야 하는 것 같습니다. 예를 들어 메모리에서 600MB를 사용하는 하나의 압축되지 않은 파일을 사용하면 서버에 최소 10개의 요청을 받고 메모리 검색에서 2GB 또는 3GB 파일을 검색할 여유가 없습니다. 우리가 찾고 있는 것은 한 줄씩 압축을 풀고 검색을 수행하는 방법이 있습니까? (또는) 이 문제에 대한 다른 해결책.

답변1

ZLib는 부분 및 순차 압축 풀기를 지원하므로 gzip 파일의 일부를 읽고(단, gzip 파일에는 헤더가 있음을 기억하세요) 팽창시키려는 바이트 수를 사용하여 util.zip.Inflater를 호출할 수 있습니다.

특히 방법을 참고하세요

setInput(byte[] b, int off, int len)

이를 통해 gzip 파일의 off 바이트에서 시작하여 해당 지점에서 len 바이트를 읽고 압축을 풀 수 있습니다.

Javadoc은 여기에 있습니다:http://docs.oracle.com/javase/6/docs/api/java/util/zip/Inflater.html

관련 정보