开发者

解决Java压缩zip异常java.util.zip.ZipException:duplicate entry:问题

开发者 https://www.devze.com 2023-12-22 10:29 出处:网络 作者: 无敌浪浪
目录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压缩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)。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号