利用java进行zip文件解压缩
利用java进行zip文件解压缩
本文利用Java的zip包中的ZipFile和ZipEntry两个类,获取到压缩包中的所有文件,并将压缩文件通过InputStream写入一个byte数组,再将该byte数组赋值给FileOutputStream中实现压缩文件的解压操作。最后再返回一个包括所有文件绝对路径名的ArrayList
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;public class FileUtil { public static void main(String[] args) {System.out.println("start to compress");ArrayList<String> list=GetFile("H:\\remote\\somegit.zip","H:\\remote\\");}public static ArrayList<String> GetFile(String srcFile,String desDirectory) {ArrayList<String> directories=new ArrayList<>();File zippedFile=new File(srcFile);try {if(!zippedFile.exists())throw new FileNotFoundException();if(!srcFile.endsWith("zip")) {throw new Exception("文件格式不对");}ZipFile zf=new ZipFile(srcFile);//ZipInputStream zis=new ZipInputStream(new FileInputStream(zippedFile));Enumeration<? extends ZipEntry> zipe=zf.entries();String directory="";String file_name="";while(zipe.hasMoreElements()) {ZipEntry ze=zipe.nextElement();if(directory.endsWith("\\"))directory=desDirectory+ze.getName();else {directory =desDirectory+"\\"+ze.getName();}File f_d=new File(directory);if(ze.isDirectory()) { if(!f_d.exists())f_d.mkdirs();}else { if(!f_d.exists())f_d.createNewFile();try(InputStream fis=zf.getInputStream(ze);FileOutputStream fos=new FileOutputStream(f_d);){byte[] b_p=new byte[1024];int length=-1;while((length=fis.read(b_p))>0) {fos.write(b_p);}fos.flush();directories.add(f_d.getAbsolutePath());}catch(Exception e) {e.printStackTrace();return null;}}}String s_file="";return directories;}catch(Exception e) {e.printStackTrace();return null;}}
}
一、利用压缩文件名创建一个ZipFile对象,利用ZipFile获取一个Enumeration<? extends ZipEntry>
ZipFile zf=new ZipFile(srcFile);
Enumeration<? extends ZipEntry> zipe=zf.entries()
二、对Enumeration中的每一个zipentry进行操作,如果是文件夹则获取文件夹路径,如果是文件则通过输入流写入byte数组,同时将byte数组的内容写入输出流,并将在本地的文件路径添加到ArrayList当中。
while(zipe.hasMoreElements()) {ZipEntry ze=zipe.nextElement();if(directory.endsWith("\\"))directory=desDirectory+ze.getName();else {directory =desDirectory+"\\"+ze.getName();}File f_d=new File(directory);if(ze.isDirectory()) { if(!f_d.exists())f_d.mkdirs();}else { if(!f_d.exists())f_d.createNewFile();try(InputStream fis=zf.getInputStream(ze);FileOutputStream fos=new FileOutputStream(f_d);){byte[] b_p=new byte[1024];int length=-1;while((length=fis.read(b_p))>0) {fos.write(b_p);}fos.flush();directories.add(f_d.getAbsolutePath());}
利用java进行zip文件解压缩相关推荐
- 利用Java进行zip文件压缩与解压缩
可能存在的业务情况: 1.用户上传了压缩包,需校验压缩包中的文件是否合格. 2.用户上传压缩包,对压缩包中的文件进行批量水印处理 解决思路: 1.读取原压缩包文件,解压缩至临时目录 2.对临时目录中的 ...
- Android Zip文件解压缩代码
在Android平台中如何实现Zip文件的解压缩功能呢? 因为Android内部已经集成了zlib库,对于英文和非密码的Zip文件解压缩还是比较简单的,下面Android123给大家一个解压缩zip的 ...
- java 操作Zip文件(压缩、解压、加密)
java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...
- android代码zip怎么用,Android平台实现Zip文件解压缩
[android]代码库在Android平台中如何实现Zip文件的解压缩功能呢? 因为Android内部已经集成了zlib库,对于英文和非密码的Zip文件解压缩还是比较简单的,下面给大家一个解压缩zi ...
- Java实现Zip文件解压
2019独角兽企业重金招聘Python工程师标准>>> ##1. 两种java实现zip文件解压方式 使用JDK的原生类java.util.zip,上代码: import java. ...
- java zip文件操作,java 关于 zip 文件 的 基本操作
这里用的是appache的包 为了防止文件中文名乱码问题 java 操作 .zip 文件 压缩文件 解压文件 删除文件夹等 package com.gaeainfo.toponymbase.uti ...
- java下载zip文件损坏_使用Java下载.zip文件会导致损坏的.zip文件?
我写了这个方法来下载最新的Selenium Chrome驱动程序,它不起作用.它导致损坏的.zip文件.任何人都可以发现我的错误在哪里?使用Java下载.zip文件会导致损坏的.zip文件? priv ...
- Java实现Zip文件的解压和压缩_ZipUtil
这是一个关于Java的zip文件的解压和压缩工具类,里面除了解压和压缩还有删除.copy等其他功能. 在Java开发中,经常会遇到上传下载,有可能就会遇到解压,于是我就封装了工具类,方便使用. 在本文 ...
- java qq 传送文件_如何利用Java实现QQ文件传输功能.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > Java 如何利用Java实现QQ文件传输功能.pdf2页 本文 ...
最新文章
- 自建ELK vs 日志服务(SLS)全方位对比
- lf 前后端分离 (4) 价格策略
- JS中NaN、NULL、undefined、详解
- 【ios】NSMutableArray initWithContentOfFile 得到nil后无法进行addObject的问题
- Puppet 资源公有属性的其他描述方式(三十)
- 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 III【难度中等】
- Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告
- did not detect an --insecure-registry argument on the Docker daemon解决方法
- java函数调用实例_Java使用方法引用实现任意对象的实例方法
- 安装WindowBuilder后,新建JFrame文件,不能查看Design
- 腾讯 csig 面试简述(已通过)
- 异数OS国产CPU平台移植项目需求分析
- python中apply函数的使用
- 外挂开发中的封包技术
- excel图片 html,微商相册生成EXCEL表格中将原图按HTML格式显示的实例
- 使用git拉取远程仓库代码
- Foobar 2000 EIKO 增强版 取消“最小化到托盘”设置
- 计算机创建只读用户,如何把电脑的文件夹在局域网共享成只读,别人不能删除和修改?...
- Linux之音视频入门
- python自我总结笔记、加上一些自己思考_2020.1 月 阿巛个人总结