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

 更新时间:2023年12月21日 10:10:55   作者:无敌浪浪  
这篇文章主要介绍了解决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几种分布式全局唯一ID生成方案

    Java几种分布式全局唯一ID生成方案

    本文主要介绍了聊聊几种分布式全局唯一ID生成方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 关于maven工程多模块、项目打包问题

    关于maven工程多模块、项目打包问题

    这篇文章主要介绍了关于maven工程多模块、项目打包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Java中mybatis的三种分页方式

    Java中mybatis的三种分页方式

    这篇文章主要介绍了Java中mybatis的三种分页方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • IDEA新建JAVA项目简单图文教程

    IDEA新建JAVA项目简单图文教程

    这篇文章主要给大家介绍了关于IDEA新建JAVA项目的相关资料,IDEA是现在java中最为常用的编译器,所以如何使用IDEA来创建java项目呢,这里给大家总结下,需要的朋友可以参考下
    2023-08-08
  • Spring依赖注入(DI)两种方式的示例详解

    Spring依赖注入(DI)两种方式的示例详解

    这篇文章主要介绍了Spring依赖注入(DI)的两种方式:setter注入和构造器注入。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • java后台发起get请求获取响应数据

    java后台发起get请求获取响应数据

    这篇文章主要为大家详细介绍了java后台发起get请求获取响应数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • java实现俄罗斯方块

    java实现俄罗斯方块

    这篇文章主要为大家详细介绍了java实现俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 关于HashMap源码解读

    关于HashMap源码解读

    HashMap是基于哈希表的Map接口实现,主要用于存储键值对,它通过数组、链表和红黑树来实现,解决了哈希冲突问题,Java 8中,HashMap对数据结构进行了优化,引入红黑树来提高查找效率,此外,HashMap是非线程安全的,适用于单线程环境
    2024-09-09
  • 浅谈Java字符串比较的三种方法

    浅谈Java字符串比较的三种方法

    这篇文章主要介绍了浅谈Java字符串比较的三种方法,字符串比较是常见的操作,包括比较相等、比较大小、比较前缀和后缀串等,需要的朋友可以参考下
    2023-04-04
  • Springboot @Value注入boolean设置默认值方式

    Springboot @Value注入boolean设置默认值方式

    这篇文章主要介绍了Springboot @Value注入boolean设置默认值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论