java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > 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.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应该做唯一处理

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文