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