利用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文件解压缩相关推荐

  1. 利用Java进行zip文件压缩与解压缩

    可能存在的业务情况: 1.用户上传了压缩包,需校验压缩包中的文件是否合格. 2.用户上传压缩包,对压缩包中的文件进行批量水印处理 解决思路: 1.读取原压缩包文件,解压缩至临时目录 2.对临时目录中的 ...

  2. Android Zip文件解压缩代码

    在Android平台中如何实现Zip文件的解压缩功能呢? 因为Android内部已经集成了zlib库,对于英文和非密码的Zip文件解压缩还是比较简单的,下面Android123给大家一个解压缩zip的 ...

  3. java 操作Zip文件(压缩、解压、加密)

    java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...

  4. android代码zip怎么用,Android平台实现Zip文件解压缩

    [android]代码库在Android平台中如何实现Zip文件的解压缩功能呢? 因为Android内部已经集成了zlib库,对于英文和非密码的Zip文件解压缩还是比较简单的,下面给大家一个解压缩zi ...

  5. Java实现Zip文件解压

    2019独角兽企业重金招聘Python工程师标准>>> ##1. 两种java实现zip文件解压方式 使用JDK的原生类java.util.zip,上代码: import java. ...

  6. java zip文件操作,java 关于 zip 文件 的 基本操作

    这里用的是appache的包  为了防止文件中文名乱码问题 java 操作 .zip 文件  压缩文件 解压文件 删除文件夹等 package com.gaeainfo.toponymbase.uti ...

  7. java下载zip文件损坏_使用Java下载.zip文件会导致损坏的.zip文件?

    我写了这个方法来下载最新的Selenium Chrome驱动程序,它不起作用.它导致损坏的.zip文件.任何人都可以发现我的错误在哪里?使用Java下载.zip文件会导致损坏的.zip文件? priv ...

  8. Java实现Zip文件的解压和压缩_ZipUtil

    这是一个关于Java的zip文件的解压和压缩工具类,里面除了解压和压缩还有删除.copy等其他功能. 在Java开发中,经常会遇到上传下载,有可能就会遇到解压,于是我就封装了工具类,方便使用. 在本文 ...

  9. java qq 传送文件_如何利用Java实现QQ文件传输功能.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 如何利用Java实现QQ文件传输功能.pdf2页 本文 ...

最新文章

  1. 自建ELK vs 日志服务(SLS)全方位对比
  2. lf 前后端分离 (4) 价格策略
  3. JS中NaN、NULL、undefined、详解
  4. 【ios】NSMutableArray initWithContentOfFile 得到nil后无法进行addObject的问题
  5. Puppet 资源公有属性的其他描述方式(三十)
  6. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 11丨产品销售分析 III【难度中等】
  7. Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告
  8. did not detect an --insecure-registry argument on the Docker daemon解决方法
  9. java函数调用实例_Java使用方法引用实现任意对象的实例方法
  10. 安装WindowBuilder后,新建JFrame文件,不能查看Design
  11. 腾讯 csig 面试简述(已通过)
  12. 异数OS国产CPU平台移植项目需求分析
  13. python中apply函数的使用
  14. 外挂开发中的封包技术
  15. excel图片 html,微商相册生成EXCEL表格中将原图按HTML格式显示的实例
  16. 使用git拉取远程仓库代码
  17. Foobar 2000 EIKO 增强版 取消“最小化到托盘”设置
  18. 计算机创建只读用户,如何把电脑的文件夹在局域网共享成只读,别人不能删除和修改?...
  19. Linux之音视频入门
  20. python自我总结笔记、加上一些自己思考_2020.1 月 阿巛个人总结

热门文章

  1. 一篇文章带你详细了解注册会计师CPA  财管篇
  2. 2023注会电子版教材
  3. Linux(Ubuntu16)下gedit自动补齐代码功能
  4. discuzX2插件制作教程__最菜鸟级别的入门坎
  5. 金昌EX9000文件批量转换
  6. csdn写的文章总是提示推荐受影响解决办法
  7. volvo s60 T4 2021款 使用手册
  8. 【精品】JDK17下使用Ehcache3
  9. 使用JCreator进行servlet程序的开发
  10. DirectX11环境配置之美