【问题标题】:when I use GZIPInputStream to read the gz file,It works but throws EOFException当我使用 GZIPInputStream 读取 gz 文件时,它可以工作但抛出 EOFException
【发布时间】:2019-03-30 09:12:50
【问题描述】:

我使用GZIPInputStream读取gz压缩文件,它工作但抛出EOFException,我该如何解决它,谢谢。

in = new GZIPInputStream(new FileInputStream(file));
List<String> list = IOUtils.readLines(in, "UTF-8");
for (String item : list) {
    System.out.println(item);
}

例外:

java.io.EOFException
  at java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:268)
  at java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:258) 
  at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:164) 
  at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:79) 
  at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:91) 
  at com.datamarket.job.controller.JobController.process(JobController.java:132)

【问题讨论】:

  • 最好在问题正文中添加上述 cmets。

标签: java gzipinputstream


【解决方案1】:

如果您查看堆栈跟踪,您会发现错误在readHeader 中。这通常意味着 gzip 文件已损坏。也许您正在阅读实际上不是有效 gzip 文件的内容?例如一个空文件(因为读取前两个字节似乎因文件结尾而失败)?

查看是否可以使用 gzip 命令从命令行读取相同的文件,并仔细检查文件长度。您还可以在已知良好的文件(即您创建的文件)上测试您的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2016-04-10
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多