gpt4 book ai didi

java - 无法解压缩在 Java 中使用 zlib 创建的 zip 文件

转载 作者:行者123 更新时间:2023-11-30 09:59:54 27 4
gpt4 key购买 nike

我正在尝试使用 Java 中的 zlib (java.util.zip) 来压缩文件,但创建文件后无法解压缩。我正在使用下面的代码:

    public static ByteArrayInputStream compress(InputStream inputStream, String targetFilePath) {

String fileName = new File(targetFilePath).getName();

try {

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream);
zipOutputStream.putNextEntry(new ZipEntry(fileName));
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);

byte[] buffer = new byte[1000];
int len;
while ((len = bufferedInputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, len);
}
bufferedInputStream.close();
zipOutputStream.closeEntry();
return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());

} catch (IOException ex) {
log.error("The file does not exist");
}
return null;
}

当我读取 sample.txt 文件并将其作为 InputStream 输入到此方法时,它会创建一个 sample.zip 文件。

但是,当我尝试使用 unzip 命令打开此 zip 文件时,它无法打开并出现以下错误:

  End-of-central-directory signature not found.  Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of sample.zip or
sample.zip.zip, and cannot find sample.zip.ZIP, period.

我尝试使用 jar xvf sample.zip 打开 zip,结果显示包含 sample.txt 文本文件。这是有效的,因为 jar 命令不会在 zip 文件中查找 End-of-central-directory signature

有人能解释一下为什么 zip 文件中没有这个签名吗?非常感谢这方面的任何帮助。

最佳答案

确保在您写完最后一个条目后关闭 ZipOutputStream。这使流有机会完成 ZIP 存档的创建。

关于java - 无法解压缩在 Java 中使用 zlib 创建的 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58497463/

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