解决Java压缩zip异常java.util.zip.ZipException:duplicate entry:问题
目录
- 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.pythonZipOutputStream.putNextEntry(ZipOutputStream.java:215)
出现这种错误的原因是:打包的过程中,出现相同的文件名称
关键代码
public sthttp://www.devze.comatic void doCompress(File file, ZipOutputStream out) throws IOException { if( file.exists() ){ byte[] buffer = new b编程客栈yte[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); } android out.flush(); out.closeEntry(); fis.close(); } }
注意这里
out.putNextEntry(new ZipEntry(file.getName()));
参数file.getName()
存在相同的文件名称时,就会出现开头处的异常信息。
解决方法
针对文件名做唯一处理,后面见加上时间戳信息,也可以加上别的数据,避免文件名一致
也就是在方法doCompress的参数file中,name应该做唯一处理
总结
以上为个人经验,希望能给大编程客栈家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论