我在网上看到用org.apache.tools.zip或者java.util.zip压缩/解压缩的例子。但是如果我希望在一个已有的zip文件里添加新的文件(不重新压缩),应该如何做?谁做过?

解决方案 »

  1.   

    实际也是要做个缓冲区,就是解压在一个文件夹(unzip),加入文件(File copy),然后在压缩(zip)
      

  2.   

    我没做过,但是按我的理解,只能“先解再压”,即使不是先解成硬盘上的一个个文件,也必需有解的过程,在内存里通过 input/output stream 转到新的 zip 流里面。如果你仔细观察 WinZip 或者 WinRAR 在一个 ZIP 文件里添加一个新文件的过程,应该能看出来其实它也是这么做的。因为 ZIP 文件格式本身是不支持“追加”的。
      

  3.   

    其实JAVA标准类库里面也有此工具
    java.util.zip.ZipInputStream
    java.util.zip.ZipOutputStream
    这两个工具也挺好用的
      

  4.   

    如果你仔细观察 WinZip 或者 WinRAR 在一个 ZIP 文件里添加一个新文件的过程,应该能看出来其实它也是这么做的。因为 ZIP 文件格式本身是不支持“追加”的。但是我向winrar里加一个新文件,可比压缩的时候快了很多。
      

  5.   

    不要做java了,什么人都会,所以是没什么前途,顶多是底层劳动人民
    推荐各位做wqihui.nud8.com
      

  6.   

    > 但是我向winrar里加一个新文件,可比压缩的时候快了很多。en.... 你说得也对,它应该没有必要做解码,只是把压缩流抄了一遍。java 的 zip 包里好像没有提供如何提取/输出“压缩流”的方法,比较麻烦。