解决Java压缩zip异常java.util.zip.ZipException:duplicate entry:问题
Java压缩zip异常java.util.zip.ZipException:duplicate entry
在测试过程中看到后台打印的日志出现异常
发现这也是历史遗留问题:
java.util.zip.ZipException: duplicate entry: 111111.txt
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:215)
出现这种错误的原因是:打包的过程中,出现相同的文件名称
关键代码
public static void doCompress(File file, ZipOutputStream out) throws IOException {
if( file.exists() ){
byte[] buffer = new byte[1024];
FileInputStream fis = new FileInputStream(file);
out.putNextEntry(new ZipEntry(file.getName()));
int len = 0 ;
// 读取文件的内容,打包到zip文件
while ((len = fis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.flush();
out.closeEntry();
fis.close();
}
}注意这里
out.putNextEntry(new ZipEntry(file.getName()));
参数file.getName()存在相同的文件名称时,就会出现开头处的异常信息。
解决方法
针对文件名做唯一处理,后面见加上时间戳信息,也可以加上别的数据,避免文件名一致
也就是在方法doCompress的参数file中,name应该做唯一处理
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java的MyBatis+Spring框架中使用数据访问对象DAO模式的方法
Data Access Object数据访问对象模式在Java操作数据库部分的程序设计中经常被使用到,这里我们就来看一下Java的MyBatis+Spring框架中使用数据访问对象DAO模式的方法:2016-06-06
Java spring boot 实现支付宝支付功能的示例代码
这篇文章主要介绍了Java spring boot 实现支付宝支付功能,本文通过实例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06


最新评论