今天做了一个小项目,需要动态的改变压缩文件中条目数量,请教大神,该如何删除条目,API中未找到~

解决方案 »

  1.   

    Java本身只有zip格式的支持,至于rar那是商业压缩算法,需要付费的,
      

  2.   

    对,就zip格式的,我要删除某个条目,能实现么?
      

  3.   

    用程序先解压缩,删除指定的条目,再打成压缩包。
    无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了
      

  4.   

    用程序先解压缩,删除指定的条目,再打成压缩包。
    无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了
    就算不用程序实现,也没法直接删除的。。
      

  5.   

    用程序先解压缩,删除指定的条目,再打成压缩包。
    无法在zip文件中更改是么?我这个由于数据量比较大,不想这么做,太浪费时间了
    就算不用程序实现,也没法直接删除的。。
    win rar这个软件还是可以的
      

  6.   

    z这个java API中就能做 ,用其他的jar包工具也能做 。我做过。要是没解决 我给你整理点东东。
      

  7.   

    解压就是把压缩包文件生成流 放到 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();
        }
      }
      

  8.   

       生成zip包后下载 ,就是把文件输入流放到转换成压缩包后的流中 
    ZipArchiveOutputStream zos = new ZipArchiveOutputStream(response.getOutputStream());
    ArchiveEntry entry = new ZipArchiveEntry(relativeName); 生成压缩项放到压缩流中
    最后把这个文件流 IOUtils.copy(origin, zos);
      

  9.   

    winrar删除里面的文件好像也是解压再重压
      

  10.   

    API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢?
      

  11.   

    那向zip中添加文件呢?对于已经生成的zip,再添加文件就把以前的覆盖了啊
      

  12.   

    API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢?
    你可以把已经生成的zip包解压开,把你需要的文件从新压缩一个ZIP包这样不就实现了删除吗
      

  13.   

    API中不行吧,对于已经生成的zip文件,好像既不能追加文件也不能删除文件,有没有三方的jar包可以实现呢?
    你可以把已经生成的zip包解压开,把你需要的文件从新压缩一个ZIP包这样不就实现了删除吗
    这样做是可以,问题是数据量比较大,先解压再压缩太浪费时间,再把文件返回给客户端的话,等待时间太长了
      

  14.   

    追加的也行,需要用三方的jar包么,我追加的时候都是把原来的文件覆盖了
      

  15.   

    commons-fileupload-1.2.2.jar 我用的是这个包 你看下10L,追加就是添加个压缩项吗。
      

  16.   

    嗯,就是添加压缩项。
    ArchiveEntry entry = new ZipArchiveEntry(relativeName); 
    IOUtils.copy(origin, zos);
    这2句就可以实现添加压缩项而不覆盖么?