gpt4 book ai didi

java - Zip文件流引发CRC错误

转载 作者:行者123 更新时间:2023-11-30 10:18:17 26 4
gpt4 key购买 nike

我正在尝试将多个文件读取为BLOB(从数据库中),解压缩,压缩并使用JAX-WS流式压缩文件。上面的代码以流方式发送zip文件,但是Windows程序未打开下载的zip文件,并抛出CRC错误。在浏览了一些帖子之后,我添加了zipOutputStream.finish()(就在zipOutStream.flush()之前),该文件似乎可以修复错误,但仅压缩一个文件,而忽略其他文件。

任何帮助深表感谢

try (ResultSet resultSet = pstmt.executeQuery()) {
try (ByteArrayOutputStream byteStream = new ByteArrayOutputStream()) {
try (ZipOutputStream zipOutputStream = new ZipOutputStream(byteStream)) {

while (resultSet.next()) {
Blob blob = getBlob();

try (InputStream fileInputStream = new GZIPInputStream(blob.getBinaryStream())) {
try (ByteArrayOutputStream fileByteStream = new ByteArrayOutputStream()) {
// Custom method: Copy the above fileInputStream to fileByteStream
IOUtils.copy(fileInputStream, fileByteStream);
ZipEntry entry = new ZipEntry(fileName);
zipOutputStream.putNextEntry(entry);
zipOutputStream.write(fileInputStream.toByteArray());
zipOutputStream.flush();
zipOutputStream.closeEntry();
}
}

try (InputStream inputStream = new ByteArrayInputStream(byteStream.toByteArray());) {
InputStreamDataSource inputDataSource = new InputStreamDataSource(fileName, inputStream);
dataHandler = new DataHandler(inputDataSource);
}
}
}
}
}

最佳答案

关闭流

您成功关闭了zip文件中的每个条目。

但是您错过了关闭ZipOutputStream的机会!

ZipOutputStream.close()方法确实写入目录结构。

顺便说一下...。您确实不需要zip文件末尾的目录结构。它仅出于兼容性原因而已。

关于java - Zip文件流引发CRC错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49373714/

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