ZIP4J解压优点

  1. ZIP4J 是一个支持处理ZIP文件的开源库
  2. 支持创建,修改,添加,删除,解压 压缩文件
  3. 支持读/写密码保护
  4. 支持AES加密 128/256
  5. 支持标准ZIP加密
  6. 支持进度监视器
  7. 自持Unicode 文件名
  8. 支持创建分卷压缩文件
  9. 支持将文件添加到压缩包中但不进行压缩

ZIP4J 项目地址为 :http://www.lingala.net/zip4j/.

项目包结构分为三层:

  1. ZIP:该包下主要讲述压缩包的新增,修改,删除等例子(包含加密文件创建,通过流的方式创建 、添加压缩文件 、创建分卷压缩文件);
  2. MISC:该包下主要展示几个工具方法例子,如:是否是分卷压缩包的判断、获取压缩包中的文件信息(文件名 大小等信息)、压缩进度查看、根据文件名删除压缩包对应文件等;
  3. EXTRACT:该包下例子都是关于解压压缩包的例子,包括解压加密文件等;

示例1 创建压缩包添 加文件到压缩包中(未设置加密)

public class AddFilesDeflateComp {public AddFilesDeflateComp() {try {ZipFile zipFile = new ZipFile("c:\\ZipTest\\AddFilesDeflateComp.zip");ArrayList filesToAdd = new ArrayList();filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));filesToAdd.add(new File("c:\\ZipTest\\myvideo.avi"));filesToAdd.add(new File("c:\\ZipTest\\mysong.mp3"));ZipParameters parameters = new ZipParameters();parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // set compression method to deflate compressionparameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); zipFile.addFiles(filesToAdd, parameters);} catch (ZipException e) {e.printStackTrace();}   }/*** @param args*/public static void main(String[] args) {new AddFilesDeflateComp();}}
  • 该类主要用于创建普通压缩包。如果压缩包不存在 则会自动创建一个ZIP包;如果已经存在一个不为空的同名ZIP压缩包 会将内容添加到该同名压缩包中。
  • 如果手动创建一个格式为ZIP的空压缩包进行保存,则为抛出异常:ZipException :Negative seek offset
  • 如果将其他的文件后缀修改为ZIP包再运行程序,也会抛出异常:ZipException: zip headers not found. probably not a zip file
    ZIP4J 提供ZipParameters对象来进行压缩参数设置,其中setCompressionMethod方法可以设置压缩还是 不压缩

示例2 创建压缩包添加文件到 文件夹中进行压缩

public class AddFilesToFolderInZip {public AddFilesToFolderInZip() {try {ZipFile zipFile = new ZipFile("c:\\ZipTest\\AddFilesDeflateComp.zip");ArrayList filesToAdd = new ArrayList();filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));filesToAdd.add(new File("c:\\ZipTest\\myvideo.avi"));filesToAdd.add(new File("c:\\ZipTest\\mysong.mp3"));ZipParameters parameters = new ZipParameters();parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);parameters.setRootFolderInZip("test2/");zipFile.addFiles(filesToAdd, parameters);} catch (ZipException e) {e.printStackTrace();} }/*** @param args*/public static void main(String[] args) {new AddFilesToFolderInZip();}
}
  • 该程序执行后,会将sample.txt、myvideo.avi、mysong.mp3 添加到test2文件夹中 并生成AddFilesDeflateComp.zip 压缩包
  • 如果已经存在AddFilesDeflateComp.zip,则会将需要打包的内容添加到已经存在的压缩包去

示例3 添加文件夹到压缩包中

public class AddFolder {public AddFolder() {try {ZipFile zipFile = new ZipFile("c:\\ZipTest\\AddFolder.zip");String folderToAdd = "c:\\FolderToAdd";ZipParameters parameters = new ZipParameters();parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);zipFile.addFolder(folderToAdd, parameters);} catch (ZipException e) {e.printStackTrace();}}public static void main(String[] args) {new AddFolder();}}
  • 需要添加的文件夹必须存在,否则抛出异常:ZipException: input folder does not exist

示例4 创建加密压缩包

public class AddFilesWithAESEncryption {public AddFilesWithAESEncryption() {try {ZipFile zipFile = new ZipFile("c:\\ZipTest\\AddFilesWithAESZipEncryption.zip");ArrayList filesToAdd = new ArrayList();filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));filesToAdd.add(new File("c:\\ZipTest\\myvideo.avi"));filesToAdd.add(new File("c:\\ZipTest\\mysong.mp3"));ZipParameters parameters = new ZipParameters();parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); parameters.setEncryptFiles(true);parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);parameters.setPassword("123");zipFile.addFiles(filesToAdd, parameters);} catch (ZipException e) {e.printStackTrace();}}public static void main(String[] args) {new AddFilesWithAESEncryption();}}

加密压缩包后打开时需要输入密码,与rar相同:

示例5 创建分卷压缩包

public class CreateSplitZipFile {public CreateSplitZipFile() {try {ZipFile zipFile = new ZipFile("c:\\ZipTest\\CreateSplitZipFile.zip");ArrayList filesToAdd = new ArrayList();filesToAdd.add(new File("c:\\ZipTest\\sample.txt"));filesToAdd.add(new File("c:\\ZipTest\\myvideo.avi"));filesToAdd.add(new File("c:\\ZipTest\\mysong.mp3"));ZipParameters parameters = new ZipParameters();parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);zipFile.createZipFile(filesToAdd, parameters, true, 65536);} catch (ZipException e) {e.printStackTrace();}}/*** @param args*/public static void main(String[] args) {new CreateSplitZipFile();}}
  • 执行程序后会根据设置大小生成多个 压缩包名.z + 数量编号文件,如下图:ZIP4J—ZIP文件压缩与解压缩学习
  • 如果已经存在同名压缩包,则会抛出异常提示已经存在:ZipException: zip file: c:\ZipTest\CreateSplitZipFile.zip already exists. To add files to existing zip file use addFile method
  • 需要进行分卷压缩的大小,不能小于规定的65536 bytes

示例6 通过流的方式添加文件到压缩包中

public class AddStreamToZip {public AddStreamToZip() {InputStream is = null;try {ZipFile zipFile = new ZipFile("c:\\ZipTest\\AddStreamToZip.zip");ZipParameters parameters = new ZipParameters();parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);parameters.setFileNameInZip("yourfilename.txt");parameters.setSourceExternalStream(true);is = new FileInputStream("c:\\ZipTest\\sample.txt");zipFile.addStream(is, parameters);} catch (Exception e) {e.printStackTrace();} finally {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}}public static void main(String[] args) {new AddStreamToZip();}
} 

示例7 解压压缩文件

public class ExtractAllFiles {public ExtractAllFiles() {try {ZipFile zipFile = new ZipFile("c:\\ZipTest\\ProgressInformation.zip");zipFile.extractAll("c:\\ZipTest1");} catch (ZipException e) {e.printStackTrace();}}/*** @param args*/public static void main(String[] args) {new ExtractAllFiles();}}
  • 在进行解压缩时需要判断文件是否为加密压缩,否则会抛出异常:ZipException: empty or null password provided for AES Decryptor

具体参考:https://www.open-open.com/lib/view/open1378556210553.html.

ZIP文件压缩与解压缩相关推荐

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

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

  2. java 文件压缩 解压_Java文件压缩与解压缩(一)

    package com.cn; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream ...

  3. Java 文件压缩与解压缩

    Java IO类库中有提供可以压缩与解压缩的类,其中使用最为广泛的是Zip和GZip,使用这两个类可以很方便的压缩数据. 1.使用Gzip进行简单的文件压缩 GZIP接口相对比较简单,如果只要对单个文 ...

  4. 7z001怎么解压在安卓手机上面_安卓zip文件压缩RAR解压手机下载-安卓zip文件压缩RAR解压v1.0最新版下载...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

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

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

  6. Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)

    Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩)         ...

  7. java解压缩/压缩/加密压缩/加密解压缩 ZIP4J---ZIP文件压缩与解压缩学习

    最近公司准备让各项目组提供公共工具组件,手中正好无事便研究其中一个工具 - 文件压缩与解压缩工具. 目前JAVA API已提供对于ZIP文件的压缩与解压缩,但网上总结不支持ZIP文件加密与解密甚至对于 ...

  8. cordova 安卓文件多选_安卓zip文件压缩RAR解压软件下载-安卓zip文件压缩RAR解压下载v3.0.4安卓版...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

  9. linux文件压缩、解压缩以及归档

    一.文件压缩.解压缩 1.linux  compress命令(compress/uncompress) (1)压缩文件: [root@server ~]# du -sh passwd1---查看文件大 ...

最新文章

  1. java OpenCv Mat 类的基本操作(3)
  2. linux系统reboot怎么退出,Linux系统肿么退出?
  3. 计算机原理解读图,详细讲解仪器仪表测试系统,结构原理图拿走不谢
  4. PMCAFF | 产品微操的艺术:提高核心指标的5个需求原理
  5. python从random生成列表_Python 学习DAY 17 列表生成式,生成器,迭代器,time模块,random模块...
  6. android脚步---不同activity之间参数传递
  7. axios vue 加载效果动画_vue+axios+element ui 实现全局loading加载示例
  8. Hibernate:More than one row with the given identifier was found解决办法
  9. C语言经典递归算法之和式分解
  10. 解决idea的html代码中使用es6语法报错的问题
  11. 英文环境中Wine微信不能显示中文
  12. iOS Charles(青花瓷)安装
  13. ems与nms_告警处理方法、装置、nms、oss及ems的制作方法
  14. Only no-arg methods may be annotated with @Scheduled 的解决方法
  15. c++中整形输入逗号_Excel 2013中单元格添加下拉列表的方法
  16. Ubuntu16.04+智能车+YOLO
  17. Nirvana为应用而生,开启公链市场新纪元
  18. 【Excel 教程系列第 6 篇】制作斜线表头
  19. 你看那只追风的风筝,它好像是在发电?
  20. FX5U编程常用特殊软元

热门文章

  1. 儿童体重测试软件,儿童生长发育测评系统
  2. 让火狐等浏览器也能使用HTC(HTML component)的方法
  3. 自建网站 | 知识储备HTML篇
  4. Biome-BGC生态系统模型区域模拟
  5. C++之复合类型(一)
  6. 细微之处见真章之JSON格式美化
  7. 三菱PLC伺服fb功能块程序 伺服用的FB功能块写法,编程方式非常清晰明了
  8. [附源码]java+ssm计算机毕业设计哈尔滨旅游资讯网站13hnn(源码+程序+数据库+部署)
  9. 央视将推“网络电视台”
  10. 疑难杂症篇(十八)--ROS系统中使用SLAM算法建图时出现地图漂移的几种原因