Java压缩解压zip技术_动力节点Java学院整理
发布时间 - 2026-01-11 01:11:32 点击率:次Java解压缩zip - 多个文件(包括文件夹),对多个文件和文件夹进行压缩,对复杂的文件目录进行解压。压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面...
ZipFiles(zip,"abc",new File("d:/English"),new File("d:/发放数据.xls"));
测试文件目录结构:
测试的压缩内容:English文件夹和同级的两个excel文件
File[] files = new File[]{new File("d:/English"),new File("d:/发放数据.xls"),new File("d:/中文名称.xls")};
下面是压缩的代码:
/**
* 压缩文件-由于out要在递归调用外,所以封装一个方法用来
* 调用ZipFiles(ZipOutputStream out,String path,File... srcFiles)
* @param zip
* @param path
* @param srcFiles
* @throws IOException
*
*/
public static void ZipFiles(File zip,String path,File... srcFiles) throws IOException{
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zip));
ZipTest.ZipFiles(out,path,srcFiles);
out.close();
System.out.println("*****************压缩完毕*******************");
}
/**
* 压缩文件-File
* @param zipFile zip文件
* @param srcFiles 被压缩源文件
*
*/
public static void ZipFiles(ZipOutputStream out,String path,File... srcFiles){
path = path.replaceAll("\\*", "/");
if(!path.endsWith("/")){
path+="/";
}
byte[] buf = new byte[1024];
try {
for(int i=0;i<srcFiles.length;i++){
if(srcFiles[i].isDirectory()){
File[] files = srcFiles[i].listFiles();
String srcPath = srcFiles[i].getName();
srcPath = srcPath.replaceAll("\\*", "/");
if(!srcPath.endsWith("/")){
srcPath+="/";
}
out.putNextEntry(new ZipEntry(path+srcPath));
ZipFiles(out,path+srcPath,files);
}
else{
FileInputStream in = new FileInputStream(srcFiles[i]);
System.out.println(path + srcFiles[i].getName());
out.putNextEntry(new ZipEntry(path + srcFiles[i].getName()));
int len;
while((len=in.read(buf))>0){
out.write(buf,0,len);
}
out.closeEntry();
in.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
在压缩的时候,针对文件夹进行判断,然后递归压缩文件。
然后是解压:
/**
* 解压到指定目录
* @param zipPath
* @param descDir
*
*/
public static void unZipFiles(String zipPath,String descDir)throws IOException{
unZipFiles(new File(zipPath), descDir);
}
/**
* 解压文件到指定目录
* @param zipFile
* @param descDir
*
*/
@SuppressWarnings("rawtypes")
public static void unZipFiles(File zipFile,String descDir)throws IOException{
File pathFile = new File(descDir);
if(!pathFile.exists()){
pathFile.mkdirs();
}
ZipFile zip = new ZipFile(zipFile);
for(Enumeration entries = zip.getEntries();entries.hasMoreElements();){
ZipEntry entry = (ZipEntry)entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zip.getInputStream(entry);
String outPath = (descDir+zipEntryName).replaceAll("\\*", "/");;
//判断路径是否存在,不存在则创建文件路径
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if(!file.exists()){
file.mkdirs();
}
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
if(new File(outPath).isDirectory()){
continue;
}
//输出文件路径信息
System.out.println(outPath);
OutputStream out = new FileOutputStream(outPath);
byte[] buf1 = new byte[1024];
int len;
while((len=in.read(buf1))>0){
out.write(buf1,0,len);
}
in.close();
out.close();
}
System.out.println("******************解压完毕********************");
}
解压的时候,针对文件夹判断创建不存在的文件夹,对文件夹只创建,不进行解压..因为解压是针对文件的,不是文件夹,文件夹需要自己创建。
测试方法:
public static void main(String[] args) throws IOException {
/**
* 压缩文件
*/
File[] files = new File[]{new File("d:/English"),new File("d:/发放数据.xls"),new File("d:/中文名称.xls")};
File zip = new File("d:/压缩.zip");
ZipFiles(zip,"abc",files);
/**
* 解压文件
*/
File zipFile = new File("d:/压缩.zip");
String path = "d:/zipfile/";
unZipFiles(zipFile, path);
}
测试方法并没有对异常做任何处理,这是不对的,请不要模仿。
输出结果:
abc/English/templete.xls abc/English/中文/bjpowernode/isea/533/abc/templete.xls abc/English/中文/bjpowernode/isea/533/abc/zipfile2/templete.xls abc/English/中文/bjpowernode/isea/533/abc/zipfile2/zipfile/abc/templete.xls abc/English/中文/bjpowernode/isea/533/abc/zipfile2/zipfile/abc/zipfile2/templete.xls abc/English/中文/bjpowernode/isea/533/abc/zipfile2/zipfile/abc/zipfile2/领卡清单.xls abc/English/中文/bjpowernode/isea/533/abc/zipfile2/领卡清单.xls abc/English/中文/bjpowernode/isea/templete.xls abc/English/中文/bjpowernode/isea/领卡清单.xls abc/English/中文/bjpowernode/templete.xls abc/English/领卡清单.xls abc/发放数据.xls abc/中文名称.xls *****************压缩完毕******************* d:/zipfile/abc/中文名称.xls d:/zipfile/abc/发放数据.xls d:/zipfile/abc/English/领卡清单.xls d:/zipfile/abc/English/中文/bjpowernode/templete.xls d:/zipfile/abc/English/中文/bjpowernode/isea/领卡清单.xls d:/zipfile/abc/English/中文/bjpowernode/isea/templete.xls d:/zipfile/abc/English/中文/bjpowernode/isea/533/abc/templete.xls d:/zipfile/abc/English/templete.xls d:/zipfile/abc/English/中文/bjpowernode/isea/533/abc/zipfile2/templete.xls d:/zipfile/abc/English/中文/bjpowernode/isea/533/abc/zipfile2/zipfile/abc/templete.xls d:/zipfile/abc/English/中文/bjpowernode/isea/533/abc/zipfile2/zipfile/abc/zipfile2/templete.xls d:/zipfile/abc/English/中文/bjpowernode/isea/533/abc/zipfile2/zipfile/abc/zipfile2/领卡清单.xls d:/zipfile/abc/English/中文/bjpowernode/isea/533/abc/zipfile2/领卡清单.xls ******************解压完毕********************
以上所述是小编给大家介绍的Java压缩解压zip技术,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# java
# 压缩
# java解压缩zip
# java调用7zip解压压缩包的实例
# Java压缩/解压文件的实现代码
# java中GZIP压缩解压类使用实例
# Java解压缩zip - 解压缩多个文件或文件夹实例
# 实例展示使用Java压缩和解压缩7z文件的方法
# java使用gzip实现文件解压缩示例
# Java 文件解压缩实现代码
# java 解压与压缩文件夹的实例详解
# 递归
# 多个
# 压缩文件
# 不存在
# 小编
# 的是
# 这是
# 在此
# 不需要
# 要在
# 给大家
# 请不要
# 写到
# 解压缩
# 所述
# 给我留言
# 感谢大家
# 是否存在
# 疑问请
# 有任何
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
大型企业网站制作流程,做网站需要注册公司吗?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
js代码实现下拉菜单【推荐】
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Laravel Docker环境搭建教程_Laravel Sail使用指南
打造顶配客厅影院,这份100寸电视推荐名单请查收
使用豆包 AI 辅助进行简单网页 HTML 结构设计
EditPlus中的正则表达式实战(5)
如何快速打造个性化非模板自助建站?
如何确保FTP站点访问权限与数据传输安全?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何在IIS管理器中快速创建并配置网站?
Python图片处理进阶教程_Pillow滤镜与图像增强
无锡营销型网站制作公司,无锡网选车牌流程?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
高防服务器租用指南:配置选择与快速部署攻略
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
青岛网站建设如何选择本地服务器?
如何用5美元大硬盘VPS安全高效搭建个人网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
香港网站服务器数量如何影响SEO优化效果?
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel如何配置Horizon来管理队列?(安装和使用)
音乐网站服务器如何优化API响应速度?
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
网站制作软件有哪些,制图软件有哪些?
Laravel如何使用Telescope进行调试?(安装和使用教程)
如何快速登录WAP自助建站平台?
香港服务器部署网站为何提示未备案?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
制作电商网页,电商供应链怎么做?
如何在七牛云存储上搭建网站并设置自定义域名?
如何用搬瓦工VPS快速搭建个人网站?
如何在宝塔面板创建新站点?
详解阿里云nginx服务器多站点的配置
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何在局域网内绑定自建网站域名?
移动端脚本框架Hammer.js
php 三元运算符实例详细介绍
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
怎样使用JSON进行数据交换_它有什么限制
如何快速生成专业多端适配建站电话?

