读取tar.gz的遍历包中文件的时候,文件总是会读不全?是什么原因呢
你读取的时候有没有用 GZIPInputStream
没有的话,参考这个博客在试试 https://www.bbsmax.com/A/pRdBnvyGdn/
final TarArchiveInputStream tarIn = initializeTarArchiveStream(this.archiveFile);
try {
TarArchiveEntry tarEntry = tarIn.getNextTarEntry();
while (tarEntry != null) {
byte[] btoRead = new byte[1024];
BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(destPath)); //<- I don't want this!
int len = 0;
while ((len = tarIn.read(btoRead)) != -1) {
bout.write(btoRead, 0, len);
}
bout.close();
tarEntry = tarIn.getNextTarEntry();
}
tarIn.close();
}
catch (IOException e) {
e.printStackTrace();
}
Gzip 算法被设计用来压缩单个文件。 以 .tar.gz 结尾的文件,是使用 gzip 压缩的 .tar 归档文件。
想要解压一个 tar.gz 文件,使用tar
命令,加上-xf
选项,再加上压缩包名称:
tar -xf archive.tar.gz
这个命令将会自动探测压缩类型,并且将压缩包解压在当前文件夹。