需要 import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
对文件进行解压操作
ant.jar 的 下载地址 http://download.csdn.net/detail/qq490691606/7935909
maven中的配置
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.4.2</version> <scope>system</scope> <systemPath>${java.home}/../lib/tools.jar</systemPath> </dependency>
public class UnzipUtil { private static void createFile(String path){ File dir = new File(path); if(!dir.exists()){ dir.mkdir(); } } //获取文件名 private static String getFileName(String name){ return name.substring(0,name.lastIndexOf(".")); } public static void unzip(String zipFilePath, String unzipFilePath) throws Exception { // 创建待解压文件对象 File file = new File(zipFilePath); // 创建zip文件对象 ZipFile zipFile = new ZipFile(file); // 创建本zip文件解压目录 File unzipFile = new File(unzipFilePath + "/"+ getFileName(file.getName())); //解压文件不存在 则创建 if (!unzipFile.exists()) unzipFile.mkdirs(); // 得到zip文件条目枚举对象 Enumeration zipEnum = zipFile.getEntries(); // 定义输入输出流对象 InputStream input = null; OutputStream output = null; // 定义对象 ZipEntry entry = null; // 循环读取条目 while (zipEnum.hasMoreElements()) { // 得到当前条目 entry = (ZipEntry) zipEnum.nextElement(); String entryName = new String(entry.getName()); // 用/分隔条目名称 String names[] = entryName.split("\\/"); int length = names.length; String path = unzipFile.getAbsolutePath(); for (int v = 0; v < length; v++) { if (v < length - 1) { // 最后一个目录之前的目录 path += "/" + names[v] + "/"; createFile(path); } else { // 最后一个 if (entryName.endsWith("/")) // 为目录,则创建文件夹 createFile(unzipFile.getAbsolutePath() + "/" + entryName); else { // 为文件,则输出到文件 input = zipFile.getInputStream(entry); output = new FileOutputStream(new File(unzipFile.getAbsolutePath()+ "/" + entryName)); byte[] buffer = new byte[1024 * 8]; int readLen = 0; while ((readLen = input.read(buffer, 0, 1024 * 8)) != -1) output.write(buffer, 0, readLen); // 关闭流 input.close(); //将缓存写入硬盘 output.flush(); output.close(); } } } } } }
原文地址:http://blog.csdn.net/qq490691606/article/details/39471853