java 压缩zip异常,java.util.zip.ZipException: duplicate entry:

无_名 2014-09-23 10:48:56
ZipFile.getEntries() 可以获取压缩包中的 ZipEntry
我用putNextEntry(zipEntry)方法 放入压缩包中返回的ZipEntry
到ZipOutputStream 中 放入第二个的时候就报
(放入的两个ZipEntry并不相同)
(这个做法的初衷是希望将一个zip中的某些符合条件的文件生成一个新的zip文件)
补充 用的apache. ant包中的zip类


...全文
15272 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiao哎 2015-05-06
  • 打赏
  • 举报
回复
引用 3 楼 u010009673 的回复:
保证每次发送的都是不同的Entry就行了。

zos.putNextEntry(System.currentTimeMillis() + "");
错了, 应该是这个:

zos.putNextEntry(new ZipEntry(System.currentTimeMillis() + ""));//安置条目
xiao哎 2015-05-06
  • 打赏
  • 举报
回复
保证每次发送的都是不同的Entry就行了。

zos.putNextEntry(System.currentTimeMillis() + "");
无_名 2014-09-23
  • 打赏
  • 举报
回复
引用 1 楼 humanity 的回复:
似乎 Zip 似乎只能迭代式访问,没有直接删除某个条目的能力吧? 所以我们只能重新创建一个临时的 zip 文件啦,不符合条件的原样地写出到临时文件,而符合条件的经过变换之后写入到临时文件,最后把原来的文件关闭并删除再把临时文件改名成原来的 zip 文件。
我并非要删除zip中的条目,只是选择性的把zip中符合条件的文件 提取出来生成另外一个新的zip文件,我只所以省略解压到临时文件夹 在打包的步骤 原因是这样的 一般我们解压其中一个文件 也是通过zipFile.getInputStream(zipEntry);获取zip中 那个zipentry的一个输入流,然后写出到文件 压缩的时候在吧这个文件封装成输入流 和ZipEntry 在写到ZipOutputStream这个输出流,既然从解压到压缩 都是对流来操作,我何必要加一个解压到临时文件夹的步骤,zipFile.getInputStream(zipEntry);获取的输入流 猜测应该是与你解压成文件后从文件床件的输入流和ZipEntry 应该类型相同吧
humanity 2014-09-23
  • 打赏
  • 举报
回复
似乎 Zip 似乎只能迭代式访问,没有直接删除某个条目的能力吧? 所以我们只能重新创建一个临时的 zip 文件啦,不符合条件的原样地写出到临时文件,而符合条件的经过变换之后写入到临时文件,最后把原来的文件关闭并删除再把临时文件改名成原来的 zip 文件。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧