用java去读取tar.gz包。文件总是读不全?

读取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();
    }
 
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/692677
  • 这篇博客你也可以参考下:tar.gz 是什么
  • 除此之外, 这篇博客: 如何解压 GZ 文件中的 二、解压 tar.gz 文件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Gzip 算法被设计用来压缩单个文件。 以 .tar.gz 结尾的文件,是使用 gzip 压缩的 .tar 归档文件。

    想要解压一个 tar.gz 文件,使用tar命令,加上-xf选项,再加上压缩包名称:

    tar -xf archive.tar.gz

    这个命令将会自动探测压缩类型,并且将压缩包解压在当前文件夹。