2011-02-23 5 views
2

tar.gz 파일 내의 모든 파일 내용을 인쇄 할 수있는 응용 프로그램을 구현해야합니다. 예를 들어Java로 tar.gz 파일의 내용을 인쇄하는 방법은 무엇입니까?

:
나는 testx라는 폴더에이 같은 세 개의 파일이있는 경우 :
a.txt이 단어
가 B.txt 단어 "유비 maior을 포함 "하나님은 여왕을 저장 "을 포함, 작은 cessat "
C.txt.gz는"Hello America !! "라는 단어가있는 c.txt 파일을 포함하는 gzip으로 압축 된 파일입니다.

그래서 testx를 압축하면 압축 된 tar 파일 인 testx.tar.gz가 생성됩니다. 내 자바 응용 프로그램 그래서

나는 콘솔에 인쇄하고 싶은 :

"유비 maior, 작은 cessat"
"하나님 여왕 저장" "안녕하세요 미국을!"

나는 ZIP 버전을 구현했으며 잘 작동하지만 아파치 개미 http://commons.apache.org/compress/에서 tar 라이브러리를 유지하면 ZIP 자바 유틸리티처럼 쉽지 않은 것으로 나타났습니다.

누군가 나를 도울 수 있습니까?

내 목표를 달성하는 방법을 이해하기 위해 인터넷에서 찾고 시작했다, 그래서 나는 다음과 같은 코드가 있습니다 라인 is.copyEntryContents(out)에 따라서

GZIPInputStream gzipInputStream=null; 
gzipInputStream = new GZIPInputStream(new FileInputStream(fileName)); 
TarInputStream is = new TarInputStream(gzipInputStream); 
TarEntry entryx = null; 

while((entryx = is.getNextEntry()) != null) { 
    if (entryx.isDirectory()) continue; 
    else { 
     System.out.println(entryx.getName()); 
     if (entryx.getName().endsWith("txt.gz")){ 
      is.copyEntryContents(out); 
      // out is a OutputStream!! 
     } 
    } 
} 

를,이 파일 스트림 통과에 저장할 수있다 OutputStream,하지만 그것을 원하지 않아! 첫 번째 항목 인 ZipEntry를 유지 한 후 zip 버전에서 압축 된 루트 폴더 testx.tar.gz에서 스트림을 추출한 다음 새 ZipInputStream을 만들고 콘텐츠를 얻기 위해 함께 재생할 수 있습니다.

tar.gz 파일로이 작업을 수행 할 수 있습니까?

감사합니다.

+0

관련 항목 : [Java에서 tar.gz 파일 압축/압축 해제 방법] (http://stackoverflow.com/questions/7128171/how-to-compress-dar-gz-files-in-java) –

답변

2

그물을 서핑하는 중, 나는 흥미로운 아이디어를 발견했습니다 : http://hype-free.blogspot.com/2009/10/using-tarinputstream-from-java.html.

스트림에 우리 TarEntry를 변환 한 후, 우리는 같은 ZIP 파일에 사용되는 같은 생각 채택 할 수있다 : SO이 코드는 파일 testx.tar.gz의 내용을 인쇄 할 수

InputStream tmpIn = new StreamingTarEntry(is, entryx.getSize()); 
// use BufferedReader to get one line at a time 
BufferedReader gzipReader = new BufferedReader(
         new InputStreamReader(
         new GZIPInputStream(
         inputZip))); 

while (gzipReader.ready()) { System.out.println(gzipReader.readLine()); } 
gzipReader.close(); 

을^_^

관련 문제