Мне нужно реализовать приложение, которое позволяет печатать содержимое всех файлов в файле tar.gz.
Например:
если у меня есть три таких файла в папке с именем testx:
A.txt содержит слова "Боже, храни королеву"
B.txt содержит слова "Ubi maior, minor cessat"
C.txt.gz — это файл, сжатый с помощью gzip, который содержит файл c.txt со словами «Привет, Америка!!»
Итак, я сжимаю testx, получаю сжатый файл tar: testx.tar.gz.
Итак, с моим Java-приложением я хотел бы напечатать в консоли:
"Боже, храни королеву"
"Ubi maior, minor cessat"
"Привет, Америка!!"
Я реализовал ZIP-версию, и она работает хорошо, но сохранила библиотеку tar от apache и http://commons.apache.org/compress/, я заметил, что это не так просто, как ZIP java utils.
Может ли кто-нибудь помочь мне?
Я начал искать в сети, чтобы понять, как достичь своей цели, поэтому у меня есть следующий код:
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!!
}
}
}
Итак, в строке is.copyEntryContents(out)
можно сохранить в файл поток, проходящий через OutputStream, но я этого не хочу! В zip-версии после сохранения первой записи ZipEntry мы можем извлечь поток из сжатой корневой папки testx.tar.gz, а затем создать новый ZipInputStream и поиграть с ним, чтобы получить содержимое.
Можно ли это сделать с файлом tar.gz?
Спасибо.