鸟不拉屎

Java 压缩zip异常,java.util.zip.ZipException: duplicate entry: 问题
在测试过程中看到后台打印的日志出现异常,发现这也是历史遗留问题java.util.zip.ZipException...
扫描右侧二维码阅读全文
09
2019/12

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 压缩zip异常,java.util.zip.ZipException: duplicate entry: 问题》
文章链接:https://niaobulashi.com/archives/1381.html
除特别注明外,文章均为鸟不拉屎原创,转载时请注明本文出处及文章链接
公众号:鸟不拉屎(一个正在努力Coding的未来架构师)
Last modification:December 9th, 2019 at 05:38 pm

Leave a Comment

5 comments

  1. 芭比

    我觉得写的不错,但中间你能加入我说的这些,那就更完美了, 就是你可以先这样,然后在这样,接着在那样,最后在那样,代码的完整度就会更好。

    1. 鸟不拉屎
      @芭比

      哈哈哈哈哈,可以可以,就按你的方法弄

  2. 森纯博客

    我博客好像都没Java代码

    1. 鸟不拉屎
      @森纯博客

      哈哈哈,跟着兴趣走,我杂七杂八的。
      最近写得少

  3. 张波博客

    对于我们小站,压不压无所谓,