簡體   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