发新话题
移动帖子 加入精华 加入置顶 加入收藏 关注此帖

用ant包实现zip文件解压的类



用ant包实现zip文件解压的类

http://blog.csdn.net/shuishou119800/archive/2008/04/05/2252594.aspx
前一阵做东西的时候需要一个解zip的实现,开始只知道ant包的zip子包实现了对中文路径名的支持,感觉其他应该和util包中的zip子包没什么区别,但真写起来还是有点别扭的,毕竟它没有提供ZipInputStream类,因此只好用getEtries获得枚举类型的实体集,它的缺点就在于其破坏了实体间的级联关系,因此处理起来没有util.zip包方便了。

代码有点东拼西凑的成分,就算是转贴吧,呵呵!!!
import java.io.*;
import java.util.*;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

public class Test {
  // zipFileName为需要解压的zip文件,extPlace为解压后文件的存放路径,两者均须已经存在
  public static void extZipFileList(String zipFileName, String extPlace) throws Exception {
    ZipFile zipFile = new ZipFile(zipFileName);
    Enumeration e = zipFile.getEntries();
    ZipEntry zipEntry = null;
    while (e.hasMoreElements()) {
      zipEntry = (ZipEntry) e.nextElement();
      String entryName = zipEntry.getName();
      String names[] = entryName.split("/");
      int length = names.length;
      String path = extPlace;
      for (int v = 0; v < length; v++) {
        if (v < length - 1) {
          path += names[v] + "/";
          new File(path).mkdir();
        } else { // 最后一个
          if (entryName.endsWith("/")) { // 为目录,则创建文件夹
            new File(extPlace + entryName).mkdir();
          } else {
            InputStream in = zipFile.getInputStream(zipEntry);
            OutputStream os = new FileOutputStream(new File(extPlace + entryName));
            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) > 0) {
              os.write(buf, 0, len);
            }
            in.close();
            os.close();
          }
        }
      }
    }
    zipFile.close();
  }
}
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP

Re:用ant包实现zip文件解压的类

虽然很勉强。。。还是看明白了。。。
顺便问下,rar行不,读取的路径是打绝对路径么?
一個很懶,很隨機,很冷,很矛盾的人
=====================
人真的是一個很矛盾的東西。。。
不是過(不做過人。。。)
你不會了解。。。
编辑 回复 快速回复 TOP
发新话题