Zip文件解压缩之Java实现

Zip文件解压缩之Java实现

/**
*文件解压缩
*zipFilePath 源压缩文件路径
*targetPath  目标文件的解压路径
**/
public static void unzip(String zipFilePath, String targetPath)
	           throws IOException {
	       OutputStream os = null;
	       InputStream is = null;
	       ZipFile zipFile = null;
	       try {
	           zipFile = new ZipFile(zipFilePath);
	           String directoryPath = "";
	           if (null == targetPath || "".equals(targetPath)) {
	               directoryPath = zipFilePath.substring(0, zipFilePath
	                       .lastIndexOf("."));
	           } else {
	               directoryPath = targetPath;
	           }
	           Enumeration entryEnum = zipFile.entries();
	           if (null != entryEnum) {
	               ZipEntry zipEntry = null;
	               while (entryEnum.hasMoreElements()) {
	                   zipEntry = (ZipEntry) entryEnum.nextElement();
	                   if (zipEntry.isDirectory()) {
	                       continue;
	                   }
	                   if (zipEntry.getSize() > 0) {
	                       //
	                       File targetFile = buildFile(targetPath
	                               + File.separator + zipEntry.getName(), false);
	                       os = new BufferedOutputStream(new FileOutputStream(
	                               targetFile));
	                       is = zipFile.getInputStream(zipEntry);
	                       byte[] buffer = new byte[4096];
	                       int readLen = 0;
	                       while ((readLen = is.read(buffer, 0, 4096)) >= 0) {
	                           os.write(buffer, 0, readLen);
	                       }
	                       os.flush();
	                       os.close();
	                   } 
	               }
	           }
	       } catch (IOException ex) {
	           throw ex;
	       } finally {
	           if(null != zipFile){
	        	   zipFile.close();
	               zipFile = null;
	           }
	           if (null != is) {
	               is.close();
	           }
	           if (null != os) {
	               os.close();
	           }
	       }
	}


    /**创建文件
	 * @Title: buildFile 
	 * @Description:
	 * @param fileName
	 * @param isDirectory   true创建文件夹,false创建普通文件
	 */
	public static File buildFile(String fileName, boolean isDirectory) {
        File target = new File(fileName);
        if (isDirectory) {
            target.mkdirs();
        } else {
            if (!target.getParentFile().exists()) {
                target.getParentFile().mkdirs();
                target = new File(target.getAbsolutePath());
            }
        }
        return target;
    } 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值