[英]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.