博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 压缩和解压zip包
阅读量:6243 次
发布时间:2019-06-22

本文共 3626 字,大约阅读时间需要 12 分钟。

网上有关压缩和解压zip包的博文一大堆,我随便找了一个。看了看,依照自己的须要改动了一下,与各位分享一下,希望各位大神指正:

package com.wangpeng.utill;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipException;import java.util.zip.ZipFile;import java.util.zip.ZipOutputStream;/** * @author wangpeng */public class ToolOfZip {	/**	 * 解压zip包	 * @param inputPath 被解压的zip包的路径	 * @param targetPath 被解压到的文件夹	 * @param isClear 是否清楚已有文件夹	 */	public static void unZip(String inputPath,String targetPath, boolean isClear) {		try {			if (null == targetPath || "".equals(targetPath)) {				targetPath = inputPath.substring(0,inputPath.lastIndexOf("."));			} 			ZipFile zipFile = new ZipFile(new File(inputPath));			Enumeration
entrys = zipFile.entries(); while (entrys.hasMoreElements()) { ZipEntry entry = entrys.nextElement(); String name = entry.getName();// aaa\testdir\xxxxx\eee.txt String strTargetPath=targetPath+"/"+name; String strTargetDir=strTargetPath.substring(0, strTargetPath.lastIndexOf(File.separator)); if (entry.isDirectory()) { File dir = new File(strTargetPath); if (!dir.exists()) { dir.mkdirs(); } } else { File dir = new File(strTargetDir); if (!dir.exists()) { dir.mkdirs(); } File file = new File(strTargetPath); if (file.exists() && isClear) { file.delete(); } if (!file.exists()) { InputStream in = zipFile.getInputStream(entry); ToolOfFile.copyFile(in, file.getAbsolutePath()); } } } } catch (ZipException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * 创建ZIP文件 * * @param sourcePath * 文件或文件夹路径 * @param zipPath * 生成的zip文件存在路径(包含文件名称) */ public static void createZip(String sourcePath, String zipPath) { FileOutputStream fos = null; ZipOutputStream zos = null; try { fos = new FileOutputStream(zipPath); zos = new ZipOutputStream(fos); writeZip(new File(sourcePath), "", zos); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { if (zos != null) { zos.close(); } } catch (IOException e) { e.printStackTrace(); } } } private static void writeZip(File inFile, String parentPath, ZipOutputStream zipOutStream) { if (inFile.exists()) { if (inFile.isDirectory()) { parentPath += inFile.getName() + File.separator; File[] files = inFile.listFiles(); for (File file : files) { writeZip(file, parentPath, zipOutStream); } } else { FileInputStream fileInStream = null; try { fileInStream = new FileInputStream(inFile); ZipEntry entry = new ZipEntry(parentPath + inFile.getName()); zipOutStream.putNextEntry(entry); byte[] buff = new byte[1024]; int len; while ((len = fileInStream.read(buff)) != -1) { zipOutStream.write(buff, 0, len); zipOutStream.flush(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fileInStream != null) { fileInStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } } } public static void main(String[] args) { String oldPath = "F:/test/ddd/"; String newPath = "F:/test/ccc.zip"; // ToolOfZip.createZip(oldPath, newPath); //ToolOfZip.unZip(newPath, null, false); System.out.println(); System.out.println("---------ok----------"); }}

 

转载地址:http://qkpia.baihongyu.com/

你可能感兴趣的文章
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>
python pip install 出现 OSError: [Errno 1] Operation not permitted
查看>>
从源码分析scrollTo、scrollBy、Scroller方法的区别和作用
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
linux性能剖析工具
查看>>
flutter中的异步
查看>>
计算机高手也不能编出俄罗斯方块——计算机达人成长之路(16)
查看>>
# 2017-2018-1 20155224 《信息安全系统设计基础》第七周学习总结
查看>>
scikit-learn预处理实例之一:使用FunctionTransformer选择列
查看>>