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