java如何删除压缩文件中的条目,在线等~

啊鸿发大厦 2013-10-17 06:36:18
今天做了一个小项目,需要动态的改变压缩文件中条目数量,请教大神,该如何删除条目,API中未找到~
...全文
512 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
啊鸿发大厦 2013-10-18
  • 打赏
  • 举报
回复
嗯,就是添加压缩项。 ArchiveEntry entry = new ZipArchiveEntry(relativeName); IOUtils.copy(origin, zos); 这2句就可以实现添加压缩项而不覆盖么?
别闹腰不好 2013-10-18
  • 打赏
  • 举报
回复
commons-fileupload-1.2.2.jar 我用的是这个包 你看下10L,追加就是添加个压缩项吗。
啊鸿发大厦 2013-10-18
  • 打赏
  • 举报
回复
引用 16 楼 u012463264 的回复:
那我就不知道怎么 直接删除了,但是追加没问题。你可以试试 我以前做的要不了多少时间的 。 就是有现成的也得这么做,只不过是写好的 。
追加的也行,需要用三方的jar包么,我追加的时候都是把原来的文件覆盖了
别闹腰不好 2013-10-18
  • 打赏
  • 举报
回复
那我就不知道怎么 直接删除了,但是追加没问题。你可以试试 我以前做的要不了多少时间的 。 就是有现成的也得这么做,只不过是写好的 。
啊鸿发大厦 2013-10-18
  • 打赏
  • 举报
回复
引用 14 楼 u012463264 的回复:
[quote=引用 12 楼 aa234590 的回复:] [quote=引用 8 楼 u012463264 的回复:] z这个java API中就能做 ,用其他的jar包工具也能做 。我做过。要是没解决 我给你整理点东东。
API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢?[/quote] 你可以把已经生成的zip包解压开,把你需要的文件从新压缩一个ZIP包这样不就实现了删除吗[/quote] 这样做是可以,问题是数据量比较大,先解压再压缩太浪费时间,再把文件返回给客户端的话,等待时间太长了
别闹腰不好 2013-10-18
  • 打赏
  • 举报
回复
引用 12 楼 aa234590 的回复:
[quote=引用 8 楼 u012463264 的回复:] z这个java API中就能做 ,用其他的jar包工具也能做 。我做过。要是没解决 我给你整理点东东。
API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢?[/quote] 你可以把已经生成的zip包解压开,把你需要的文件从新压缩一个ZIP包这样不就实现了删除吗
啊鸿发大厦 2013-10-18
  • 打赏
  • 举报
回复
引用 11 楼 sunbo624 的回复:
winrar删除里面的文件好像也是解压再重压
那向zip中添加文件呢?对于已经生成的zip,再添加文件就把以前的覆盖了啊
啊鸿发大厦 2013-10-18
  • 打赏
  • 举报
回复
引用 8 楼 u012463264 的回复:
z这个java API中就能做 ,用其他的jar包工具也能做 。我做过。要是没解决 我给你整理点东东。
API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢?
sunbo624 2013-10-18
  • 打赏
  • 举报
回复
winrar删除里面的文件好像也是解压再重压
别闹腰不好 2013-10-18
  • 打赏
  • 举报
回复
生成zip包后下载 ,就是把文件输入流放到转换成压缩包后的流中 ZipArchiveOutputStream zos = new ZipArchiveOutputStream(response.getOutputStream()); ArchiveEntry entry = new ZipArchiveEntry(relativeName); 生成压缩项放到压缩流中 最后把这个文件流 IOUtils.copy(origin, zos);
别闹腰不好 2013-10-18
  • 打赏
  • 举报
回复
解压就是把压缩包文件生成流 放到 ZipArchiveInputStream is = new ZipArchiveInputStream(new BufferedInputStream(inputstream,2048),"GBK",true); 遍历这个文件 里边的ArchiveEntry项都是不包括包名的文件,也有路劲 的ArchiveEntry 可以输出到不同的文件 也可以放到数据库中 protected void extract(ArchiveInputStream is, File targetDir) throws IOException { try { if (targetDir.exists()) { FileUtils.forceDelete(targetDir); } targetDir.mkdirs(); ArchiveEntry entry = is.getNextEntry(); while (entry != null) { String name = entry.getName(); // name = name.substring(name.indexOf("/") + 1); File file = new File(targetDir, name); if (entry.isDirectory()) { file.mkdirs(); } else { file.getParentFile().mkdirs(); OutputStream os = new FileOutputStream(file); try { IOUtils.copy(is, os); } finally { IOUtils.closeQuietly(os); } } entry = is.getNextEntry(); } } finally { is.close(); } }
别闹腰不好 2013-10-18
  • 打赏
  • 举报
回复
z这个java API中就能做 ,用其他的jar包工具也能做 。我做过。要是没解决 我给你整理点东东。
啊鸿发大厦 2013-10-17
  • 打赏
  • 举报
回复
引用 6 楼 huxiweng 的回复:
[quote=引用 5 楼 aa234590 的回复:] [quote=引用 4 楼 huxiweng 的回复:] [quote=引用 3 楼 aa234590 的回复:] 对,就zip格式的,我要删除某个条目,能实现么?
用程序先解压缩,删除指定的条目,再打成压缩包。[/quote] 无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了[/quote] 就算不用程序实现,也没法直接删除的。。[/quote] win rar这个软件还是可以的
teemai 2013-10-17
  • 打赏
  • 举报
回复
引用 5 楼 aa234590 的回复:
[quote=引用 4 楼 huxiweng 的回复:] [quote=引用 3 楼 aa234590 的回复:] 对,就zip格式的,我要删除某个条目,能实现么?
用程序先解压缩,删除指定的条目,再打成压缩包。[/quote] 无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了[/quote] 就算不用程序实现,也没法直接删除的。。
啊鸿发大厦 2013-10-17
  • 打赏
  • 举报
回复
引用 4 楼 huxiweng 的回复:
[quote=引用 3 楼 aa234590 的回复:] 对,就zip格式的,我要删除某个条目,能实现么?
用程序先解压缩,删除指定的条目,再打成压缩包。[/quote] 无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了
teemai 2013-10-17
  • 打赏
  • 举报
回复
引用 3 楼 aa234590 的回复:
对,就zip格式的,我要删除某个条目,能实现么?
用程序先解压缩,删除指定的条目,再打成压缩包。
啊鸿发大厦 2013-10-17
  • 打赏
  • 举报
回复
对,就zip格式的,我要删除某个条目,能实现么?
快乐的2 2013-10-17
  • 打赏
  • 举报
回复
Java本身只有zip格式的支持,至于rar那是商业压缩算法,需要付费的,
啊鸿发大厦 2013-10-17
  • 打赏
  • 举报
回复
有木有高人啊???

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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