gpt4 book ai didi

java - 如何在 Java 中找出损坏的 gz 文件

转载 作者:行者123 更新时间:2023-12-02 04:23:29 25 4
gpt4 key购买 nike

我必须解压缩一个 .gz 文件,我正在使用以下代码:

FileInputStream fis = null;
FileOutputStream fos = null;
GZIPInputStream gin = null;
try {
File file = new File(getPath(), zipName);
fis = new FileInputStream(file);
gin = new GZIPInputStream(fis);
File newFile = // some initialization related to path and name
fos = new FileOutputStream(getPath());
byte[] buf = new byte[1024];
int len;
while ((len = gin.read(buf)) > 0) {
fos.write(buf, 0, len);
}
gin.close();
fos.close();

//newFile is ready
} catch(IOException e){
// exception catch
}

但是,当客户端 gz 文件损坏时,我收到以下错误:

  Exception in thread "main" java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.InflaterInputStream.fill(Unknown Source)
at java.util.zip.InflaterInputStream.read(Unknown Source)
at java.util.zip.GZIPInputStream.read(Unknown Source)
at java.util.zip.InflaterInputStream.read(Unknown Source)

令人惊讶的是,该文件仍然被解压缩并存储在本地位置。我根本不希望对损坏的文件进行解压缩或进一步处理。

一种方法可能是在使用 java.io.EOFException 命中 catch 子句时删除 newFile 对象,但这是正确的方法吗?当文件未损坏时,还可能存在一些其他可能的异常。

最佳答案

引用@EJP

如果您因任何原因收到任何 IOException,从损坏的输入到磁盘飞入冥王星周围的轨道,您应该删除输出文件并将操作视为失败。你不必考虑更多。 – EJP

关于java - 如何在 Java 中找出损坏的 gz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32476799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com