当我使用GZIPInputStream读取gz文件时,它可以工作,但会抛出EOFException

时间:2019-03-30 09:12:51

标签: java gzipinputstream

我使用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)

1 个答案:

答案 0 :(得分:0)

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

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