%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EA%B2%80%EC%83%89.png)
패턴 검색을 수행해야 하는 대용량 파일이 있습니다. 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