如题

解决方案 »

  1.   

    因为其他原因,不能解压。能否直接在zip包里提取目录?
      

  2.   

    当你去读取一个ZIP文件的时,对里面的entry一个一个的解析,如果是你要读的目录,则将这个entry写到你要复制的目录中去
      

  3.   

    关键是我从classpath中查找一目录,然后再把此目录下的文件一个个的复制。而此目录可能存在jar中,也可能是一般的目录。这种情况如何区分?
      

  4.   

    昨天刚把java解压zip文件整理了一下下,用到ant.jar组件: /**
     * 解压zip文件,注意不能解压rar文件哦,只能解压zip文件 解压rar文件 会出现java.io.IOException: Negative
     * seek offset异常 create date:2009-6-8 author:Administrator
     * 
     * @param zipfile
     *            zip文件,注意要是正宗的zip文件哦,不能是把rar的直接改为zip这样会出现java.io.IOException:
     *            Negative seek offset异常 create date:2009-6-10
     *            author:Administrator
     * 
     * @param zipfile
     * @param destDir
     */
    public static void unZip(String zipfile, String destDir) { destDir = destDir.endsWith("\\") ? destDir : destDir + "\\";
    byte b[] = new byte[1024];
    int length; ZipFile zipFile;
    try {
    zipFile = new ZipFile(new File(zipfile));
    Enumeration enumeration = zipFile.getEntries();
    ZipEntry zipEntry = null; while (enumeration.hasMoreElements()) {
    zipEntry = (ZipEntry) enumeration.nextElement();
    File loadFile = new File(destDir + zipEntry.getName()); if (zipEntry.isDirectory()) {
    // 这段都可以不要,因为每次都貌似从最底层开始遍历的
    loadFile.mkdirs();
    } else {
    if (!loadFile.getParentFile().exists())
    loadFile.getParentFile().mkdirs(); OutputStream outputStream = new FileOutputStream(loadFile);
    InputStream inputStream = zipFile.getInputStream(zipEntry); while ((length = inputStream.read(b)) > 0)
    outputStream.write(b, 0, length); }
    }
    System.out.println("文件解压成功");
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }
      

  5.   

    推荐你用truezip他可以:1.在不解压的情况下更改zip文件中的某个文件。2.在不解压的情况下复制某个文件到指定目录3.解压某个文件和压缩某个目录。还有很多功能,你下载一下,参照着文档中的例子写写就可以了。告诉了你方法,代码自己写就可以了吧。呵呵