我使用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)
答案 0 :(得分:0)
如果查看堆栈跟踪,可以看到错误出在readHeader
中。这通常意味着gzip文件已损坏。也许您正在阅读的东西实际上不是有效的gzip文件?例如,一个空文件(因为读取前两个字节似乎在文件末尾失败)?
查看是否可以使用gzip命令从命令行读取相同的文件,然后仔细检查文件长度。您还可以在一个已知的好的文件(即您创建的文件)上测试代码。