java - java.util.zip.ZipException: 无效代码 -- 缺少块尾 --> 在调用 ZipInputStream.closeEntry() 时
问题描述
在 ZipInputStream 上调用 coseEntry() 时,会导致 -->java.util.zip.ZipException: invalid code -- missing end-of-block
private byte[] updateWithNewTraffic(ZipInputStream TrafficZipIn, String action){
byte[] ByteArr = null;`enter code here`
try {
ByteArrayOutputStream OutByteStream = new ByteArrayOutputStream();
ZipOutputStream zipOut = new ZipOutputStream(OutByteStream);
HashSet<String> files = new HashSet<String>();
ZipEntry entry = TrafficZipIn.getNextEntry();
while (entry != null) {
String filename = entry.getName();
if (FilenameUtils.getExtension(filename.toLowerCase()).equals("txt") {
zipOut.putNextEntry(new ZipEntry(fileName));
writeInToOutStream(TrafficZipIn,zipOut );
zipOut.closeEntry();
}
TrafficZipIn.closeEntry();---->getting exception in this line
entry = TrafficZipIn.getNextEntry();
}
TrafficZipIn.close();
zipOut.close();
ByteArr = OutByteStream.toByteArray();
OutByteStream.close();
} catch (Exception e) {
//Getting exception.
}
return ByteArr;
}
private void writeInToOutStream(InputStream in, OutputStream out) {
try {
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
} catch (Exception e) {
//Failed writing to stream
}
}
解决方案
如果您有一个maven
项目,请考虑将此部分包含在pom.xml
.
Maven 可以在项目编译的资源过滤期间损坏这些文件。
阅读:Maven 资源插件
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.xls</exclude>
<exclude>**/*.xlsx</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xls</include>
<include>**/*.xlsx</include>
</includes>
</resource>
</resources>
...
推荐阅读
- java - 使用 JSch 和 PEM 私钥的 SSH,而路由器使用 openssl 密钥
- docker - 使用来自 Docker 容器的 WebProxy 的 SSL 流量
- react-native - CocoaPods 找不到 pod“Flipper-Folly”的兼容版本
- r - 如何在 R 的一个图中拟合两个半变异函数?
- azure-data-explorer - KQL 更新策略的数据摄取问题;查询架构与表架构不匹配
- c# - 查找与我共享的文件夹中的所有文件 Google Drive API v3
- azure - 如何将 Azure DevOps Git 存储库与 Azure 静态 Web 应用程序一起使用?
- php - 在链接产品选项卡(在 woocommerce 中)的管理面板中搜索追加销售和交叉销售时,如何添加过滤器以隐藏缺货产品?
- json - 动态创建 JSON 正文并在 React JS 中调用 API
- windows - 检查相同的 powershell 脚本是否已经在运行,如果是,请稍后运行