Java zip解压工具类

分享一个自己用的zip工具类

public class ZipUtils {
	 public static void unZip(File srcFile, String destDirPath) throws RuntimeException {
		 
		         long start = System.currentTimeMillis();
		         // 判断源文件是否存在
		         if (!srcFile.exists()) {
		             throw new RuntimeException(srcFile.getPath() + "所指文件不存在");
		         }
		         // 开始解压
		         ZipFile zipFile = null;
		         try {
		             zipFile = new ZipFile(srcFile);
		             Enumeration<?> entries = zipFile.entries();
		             while (entries.hasMoreElements()) {
		                 ZipEntry entry = (ZipEntry) entries.nextElement();
		                 System.out.println("解压" + entry.getName());
		                 // 如果是文件夹,就创建个文件夹
		                 if (entry.isDirectory()) {
		                     String dirPath = destDirPath + "/" + entry.getName();
		                     File dir = new File(dirPath);
		                     dir.mkdirs();
		                 } else {
		                     // 如果是文件,就先创建一个文件,然后用io流把内容copy过去
		                     File targetFile = new File(destDirPath + "/" + entry.getName());
		                     // 保证这个文件的父文件夹必须要存在
		                     if(!targetFile.getParentFile().exists()){
		                         targetFile.getParentFile().mkdirs();
		                     }
		                     targetFile.createNewFile();
		                     // 将压缩文件内容写入到这个文件中
		                     InputStream is = zipFile.getInputStream(entry);
		                     FileOutputStream fos = new FileOutputStream(targetFile);
		                    int len;
		                     byte[] buf = new byte[1024];
		                     while ((len = is.read(buf)) != -1) {
		                         fos.write(buf, 0, len);
		                     }
		                     // 关流顺序,先打开的后关闭
		                     fos.close();
		                     is.close();
		                 }
		             }
		             long end = System.currentTimeMillis();
		             System.out.println("解压完成,耗时:" + (end - start) +" ms");
		         } catch (Exception e) {
		             throw new RuntimeException("unzip error from ZipUtils", e);
		         } finally {
		             if(zipFile != null){
		                 try {
		                     zipFile.close();
		                 } catch (IOException e) {
		                     e.printStackTrace();
		                 }
		             }
		         }
		     }
	 public static void main(String args[]) {
		 File zip = new File("F:/data.zip");
	    	File outputDir = new File("F:/");
	    	unZip(zip,"F:/datecopy");
	 }
}

猜你喜欢

转载自blog.csdn.net/tss139/article/details/88537936
今日推荐