Zip4j学习笔记
github地址:https://github.com/srikanth-lingala/zip4j
使用版本:2.9.0
maven依赖:
<dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>2.9.0</version> </dependency>
Q:如何创建一个zip文件?
A:调用ZipFile的构造方法,然后调用addFile方法添加文件
注意:调用构造方法并不能直接在物理层面创建一个.zip文件,只有调用addFile方法才会真正创建
ZipFile有如下构造方法:
// 创建一个无密码的zip到指定路径
public ZipFile(String zipFile)
// 创建一个带密码的zip到指定路径
public ZipFile(String zipFile, char[] password)
// 创建一个无密码的zip到指定路径
public ZipFile(File zipFile)
// 创建一个带密码的zip到指定路径
public ZipFile(File zipFile, char[] password)
Q:如何压缩单个文件?
A:创建一个ZipFile之后,调用addFile方法(调用该方法会在物理层面把ZipFile创建出来)
addFile有如下重载方法:
注意:重复调用addFile方法时,只要压缩的文件不存在就会增量添加,不会覆盖原文件
public void addFile(String fileToAdd) throws ZipException
public void addFile(String fileToAdd, ZipParameters zipParameters) throws ZipException
public void addFile(File fileToAdd) throws ZipException
public void addFile(File fileToAdd, ZipParameters parameters) throws ZipException
Q:如何压缩多个文件?
A:创建一个ZipFile之后,调用addFiles方法(调用该方法会在物理层面把ZipFile创建出来)
addFiles有如下重载方法:
注意:添加单个文件(addFile)实际上底层调的是添加多个文件的方法(addFiles)
public void addFiles(List<File> filesToAdd) throws ZipException
public void addFiles(List<File> filesToAdd, ZipParameters parameters) throws ZipException
Q:如何压缩文件夹?
A:创建一个ZipFile之后,调用addFolder
方法(调用该方法会在物理层面把ZipFile创建出来)
addFolder有如下重载方法:
注意:压缩文件夹的意思是将整个文件夹压缩,新建的压缩包的根目录就是该文件夹
public void addFolder(File folderToAdd) throws ZipException
public void addFolder(File folderToAdd, ZipParameters zipParameters) throws ZipException
private void addFolder(File folderToAdd, ZipParameters zipParameters, boolean checkSplitArchive) throws ZipException
Q:如何分卷压缩文件?
A:创建一个ZipFile之后,调用createSplitZipFile
/createSplitZipFileFromFolder
方法(调用该方法会在物理层面把ZipFile创建出来)
什么场景下需要分卷压缩?
eg:举个工作中实际遇到的例子,我司有邮件发送报表的功能,随着业务量增加,报表附件突破了单个50M的限制导致发送失败,这种情况下将报表分卷压缩到每个30M即可解决
public void createSplitZipFile(List<File> filesToAdd, ZipParameters parameters, boolean splitArchive,
long splitLength) throws ZipException
public void createSplitZipFileFromFolder(File folderToAdd, ZipParameters parameters, boolean splitArchive,
long splitLength) throws ZipException