繁体   English   中英

java.util.zip.ZipException:不是GZIP格式-commons-compress.jar

[英]java.util.zip.ZipException: Not in GZIP format - commons-compress.jar

我正在尝试第一次使用commons-compress.jar解压缩tar文件。 这是引发错误的我的初始代码。

TarArchiveInputStream myTarFile=new TarArchiveInputStream(
(new GZIPInputStream
(new FileInputStream("C:/Users/abc/xyz_20151010.tar")));
System.out.println(myTarFile.getCurrentEntry());

tar文件包含扩展名为.dat.gz.bak的文件集

我需要从.dat文件读取和处理数据。

您正在将tar文件读为gzip压缩文件,而它是纯tar文件,并且仅压缩其中的项目。

因此,请避免使用此GZIPInputStream,而应逐项进行操作,使用read()进行读取,然后使用GZIPInputstream(ByteArrayInputStream(content))进行处理。 您可以考虑创建输入流,以即时读取内容。

如果输入文件是.tar.gz ,则应将文件包装在TarInputStream ,而tar包装在GZip 但是从文件名看来,您似乎有一个普通的tar存档。

因此,如果我了解您的输入格式,则需要这样的内容:

public class MyDataReader {

  private final TarArchiveInputStream tar;

  public boolean hasNextData() {
    return tar.getNextTarEntry() != null;
  }

  public MyData nextData() {
    byte[] buff = new byte[tar.getCurrentEntry().getSize()];
    // loop over tar until all entry has been read
    InputStream entry = new ByteArrayInputStream(buff);
    GZIPInputStream gzip = new GZipInputStream(entry);
    // process gzip input stream
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM