java 压缩和解压zip包
网上有关压缩和解压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<? extends ZipEntry> 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----------");
}
}
java 压缩和解压zip包的更多相关文章
- 使用PowerShell压缩和解压ZIP包
更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月13日. 解压ZIP包 使用PowerShell的Expand-Archive命令.PowerShell官方文档地址. 命令格式: ...
- Java压缩/解压.zip、.tar.gz、.tar.bz2(支持中文)
本文介绍Java压缩/解压.zip..tar.gz..tar.bz2的方式. 对于zip文件:使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile,通过设置 ...
- 【转】Java压缩和解压文件工具类ZipUtil
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- JAVA调用外部安装7-Zip压缩和解压zip文件
1.首先在本地安装7-Zip(下载链接:https://www.7-zip.org/)2.调用7-Zip压缩.zip文件: /** * 生成.zip压缩文件 * @param fi ...
- java压缩和解压字符串,Byte数组,String
在网上找到的压缩解压的工具类,可以压缩String字符串 /*** * 压缩GZip * * @param data * @return */ public static byte[] gZip(by ...
- Qt压缩和解压 zip
zlib编译详见 https://blog.csdn.net/zhangxuechao_/article/details/85049711 下载quazip https://github.com/st ...
- JAVA压缩解压ZIP文件,中文乱码还需要ANT.JAR包
package zip; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStrea ...
- 原生java 压缩解压zip文件
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...
- java 文件压缩和解压(ZipInputStream, ZipOutputStream)
最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...
随机推荐
- java.lang.NumberFormatException: multiple points 异常
平时使用SimpleDateFormat的时候都是在单线程的情况下使用的,今天在改写别人的代码,发现每个类中都会写大量的SimpleDateFormat实例.作为一个程序特有的洁癖开始对代码进行优化. ...
- Redis安装-CentOs7
官方地址 确保gcc已经安装 $ yum list installed | grep gcc $ yum install gcc 下载.提取和编辑Redis: $ wget http://downlo ...
- 微信支付报错:app没有获取微信支付权限
调试微信支付的时候报错: Array( [return_code] => FAIL [return_msg] => 您没有APP支付权限) 查询了,发现自己将之前的公众号支付的APPID一 ...
- Spring:基于注解的依赖注入的使用
1.什么是pojo?什么是bean? 首先,在之前几篇Spring的介绍文章当中,自己都提到了一个名词叫做POJO类,但是在回顾Spring的注解的使用的时候,去形容java当中的对象还有一个名词是叫 ...
- mysql having的用法
having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. ...
- HDU 1811 Rank of Tetris 【拓扑排序 + 并查集】
自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜, ...
- 【KM】POJ2195/HDU1533-Going home
//最近没什么时间quq据说长得帅的人都在切八中,然而长得丑的人只能水水裸题 [题目大意] 给出一张地图及人和房屋的位置,求出每个人回到不同房屋所具有的最小代价和. [思路] 最小权匹配,先O(n^2 ...
- [POI2001]Peaceful Commission
题目大意: 有n个国家要派代表开会,每个国家有两个代表可供选择. 有m对代表有仇,不能同时开会. 若每个国家只能派一个代表开会,问是否存在一种方案,使得每个国家都能正常参会? 如果有,输出字典序最小的 ...
- Asp.Net MVC part4 异步、校验、区域Area
异步方式1:使用jquery的异步函数方式2:使用MVC的AjaxHelper行为的返回值设置:JsonResult对象,使用Json方法接收一个对象,在内部会完成对象的js序列化,向输出流中输出js ...
- 高性能mysql读后感
1. 事务里的写操作,四种隔离级别,都会加排他锁. 2. 事务里的读操作,前三种隔离级别,不会加锁,最后一种隔离级别,会加共享锁. 3. 上面的写.读操作,都是隐式加的锁. 可以自己显示对读操作进行 ...