java如何删除压缩文件中的条目,在线等~ 今天做了一个小项目,需要动态的改变压缩文件中条目数量,请教大神,该如何删除条目,API中未找到~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Java本身只有zip格式的支持,至于rar那是商业压缩算法,需要付费的, 对,就zip格式的,我要删除某个条目,能实现么? 用程序先解压缩,删除指定的条目,再打成压缩包。无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了 用程序先解压缩,删除指定的条目,再打成压缩包。无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了就算不用程序实现,也没法直接删除的。。 用程序先解压缩,删除指定的条目,再打成压缩包。无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了就算不用程序实现,也没法直接删除的。。win rar这个软件还是可以的 z这个java API中就能做 ,用其他的jar包工具也能做 。我做过。要是没解决 我给你整理点东东。 解压就是把压缩包文件生成流 放到 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(); } } 生成zip包后下载 ,就是把文件输入流放到转换成压缩包后的流中 ZipArchiveOutputStream zos = new ZipArchiveOutputStream(response.getOutputStream());ArchiveEntry entry = new ZipArchiveEntry(relativeName); 生成压缩项放到压缩流中最后把这个文件流 IOUtils.copy(origin, zos); winrar删除里面的文件好像也是解压再重压 API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢? 那向zip中添加文件呢?对于已经生成的zip,再添加文件就把以前的覆盖了啊 API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢?你可以把已经生成的zip包解压开,把你需要的文件从新压缩一个ZIP包这样不就实现了删除吗 API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢?你可以把已经生成的zip包解压开,把你需要的文件从新压缩一个ZIP包这样不就实现了删除吗这样做是可以,问题是数据量比较大,先解压再压缩太浪费时间,再把文件返回给客户端的话,等待时间太长了 追加的也行,需要用三方的jar包么,我追加的时候都是把原来的文件覆盖了 commons-fileupload-1.2.2.jar 我用的是这个包 你看下10L,追加就是添加个压缩项吗。 嗯,就是添加压缩项。ArchiveEntry entry = new ZipArchiveEntry(relativeName); IOUtils.copy(origin, zos);这2句就可以实现添加压缩项而不覆盖么? hibernate 的不明错误 权限表设计 Java编码问题,请指教。 myeclipse8.0安装svn插件的问题 java调用sendmail如何发送邮件? tiles框架问题 着急 在线等 求求所有高手 我着急啊 使用SPRING 的SimpleUrlHandlerMapping遇到问题 待高人解答。 提取WORD的内容到数据库? 在输入数据库的时候,怎么保证输入值是唯一的 EJB中怎么调用Oracle存储过程? 求大神解救啊,struts访问action问题 报错Exception in thread "Timer-2" java.lang.NullPointerException
无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了
无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了
就算不用程序实现,也没法直接删除的。。
无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了
就算不用程序实现,也没法直接删除的。。
win rar这个软件还是可以的
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();
}
}
ZipArchiveOutputStream zos = new ZipArchiveOutputStream(response.getOutputStream());
ArchiveEntry entry = new ZipArchiveEntry(relativeName); 生成压缩项放到压缩流中
最后把这个文件流 IOUtils.copy(origin, zos);
你可以把已经生成的zip包解压开,把你需要的文件从新压缩一个ZIP包这样不就实现了删除吗
你可以把已经生成的zip包解压开,把你需要的文件从新压缩一个ZIP包这样不就实现了删除吗
这样做是可以,问题是数据量比较大,先解压再压缩太浪费时间,再把文件返回给客户端的话,等待时间太长了
ArchiveEntry entry = new ZipArchiveEntry(relativeName);
IOUtils.copy(origin, zos);
这2句就可以实现添加压缩项而不覆盖么?