五月学习笔记第二篇(解压zip文件代码)

来源:互联网 发布:json数组 编辑:程序博客网 时间:2024/06/07 16:11

功能:解压zip文件到指定位置(zip文件里可以有多个文件夹,可以有中文)

从网上找的代码,经过测试没问题,记录一下,方便以后使用

需要一个ant.jar

http://download.csdn.net/detail/wy_5month/7381011

以下是代码部分

package com.example.zip;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Enumeration;import java.util.zip.ZipException;import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;public class ZipUtil {/** * 使用 org.apache.tools.zip.ZipFile 解压文件,它与 java 类库中的   * java.util.zip.ZipFile 使用方式是一新的,只不过多了设置编码方式的 接口。   * 注,apache 没有提供ZipInputStream 类,所以只能使用它提供的ZipFile来读取压缩文件。   * @param archive 压缩包路径 * @param decompressDir 解压路径    * @throws IOException    * @throwsFileNotFoundException    * @throws ZipException    */public static void UnZipFile(String archive, String decompressDir)throws IOException, FileNotFoundException, ZipException {BufferedInputStream bi;ZipFile zf = new ZipFile(archive);// 支持中文Enumeration e = zf.getEntries();while (e.hasMoreElements()) {ZipEntry ze2 = (ZipEntry) e.nextElement();String entryName = ze2.getName();String path = decompressDir + "/" + entryName;if (ze2.isDirectory()) {System.out.println("正在创建解压目录 - " + entryName);File decompressDirFile = new File(path);if (!decompressDirFile.exists()) {decompressDirFile.mkdirs();}} else {System.out.println("正在创建解压文件 - " + entryName);String fileDir = path.substring(0, path.lastIndexOf("/"));File fileDirFile = new File(fileDir);if (!fileDirFile.exists()) {fileDirFile.mkdirs();fileDirFile.createNewFile();}BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(decompressDir + "/" + entryName));bi = new BufferedInputStream(zf.getInputStream(ze2));byte[] readContent = new byte[1024];int readCount = bi.read(readContent);while (readCount != -1) {bos.write(readContent, 0, readCount);readCount = bi.read(readContent);}bos.close();}}zf.close();}}


0 0
原创粉丝点击