1. 声明
当前内容主要为学习和使用Apache Commons Compress这个工具类创建7z的压缩文件
当前内容主要借鉴:官方文档
基本pom
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version>
</dependency>
<!-- 上面的compress需要依赖下面这个 -->
<!-- https://mvnrepository.com/artifact/org.tukaani/xz -->
<dependency>
<groupId>org.tukaani</groupId>
<artifactId>xz</artifactId>
<version>1.9</version>
</dependency>
如果是出现org.tukaani.xz.XXX
没找到,那么表示没有导入上面的包导致的问题
2. 基本demo
首先准备一个需要压缩的文件,再开始编写代码
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
import org.apache.commons.compress.archivers.sevenz.SevenZOutputFile;
/**
*
* @author hy
* @createTime 2021-06-20 13:22:37
* @description 当前内容主要为测试和使用7z进行压缩
*
*/
public class SevenZCompressTest {
public static void main(String[] args) {
// 报错缺少org.tukaani.xz.FilterOptions这个类
File outFile = new File("C:\\Users\\admin\\Desktop\\java的测试\\\\read-write-jar-test\\myDemo.7z");
File inFile = new File("C:\\Users\\admin\\Desktop\\java的测试\\read-write-jar-test\\jetbrains-agent.jar");
try (SevenZOutputFile sevenZOutput = new SevenZOutputFile(outFile);) {
SevenZArchiveEntry entry = sevenZOutput.createArchiveEntry(inFile, "jetbrains-agent.jar");
sevenZOutput.putArchiveEntry(entry);
byte[] buffer = new byte[1024];
int len = 0;
try (FileInputStream fis = new FileInputStream(inFile)) {
while ((len = fis.read(buffer)) != -1) {
sevenZOutput.write(buffer, 0, len);
}
}
sevenZOutput.closeArchiveEntry();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("成功写入一个7z的文件.....");
}
}
具体的基本操作和前面的操作jar文件很像,并且很简单
3. 执行后的结果
压缩成功