如何使用LZMA SDK在Java中压缩/解压缩

2022-09-03 03:43:07

http://www.7-zip.org/sdk.html这个网站提供了一个LZMA SDK用于压缩/解压缩文件,我想试一试,但我迷路了。

有人在这方面有经验吗?还是教程?谢谢。


答案 1

简短的回答:不要

7zip sdk是旧的,没有维护的,它只是一个围绕C++库的JNI包装器。现代 JVM (1.7+) 上的纯 Java 实现与C++实现一样快,并且依赖性和可移植性问题更少。

看看 http://tukaani.org/xz/java.html

XZ是基于LZMA2(LZMA的改进版本)的文件格式

发明XZ格式的人构建了XZ存档压缩/提取算法的纯java实现

XZ 文件格式设计为仅存储 1 个文件。因此,您需要先将源文件夹压缩/压缩到单个未压缩的文件中。

使用java库就像这样简单:

FileInputStream inFile = new FileInputStream("src.tar");
FileOutputStream outfile = new FileOutputStream("src.tar.xz");

LZMA2Options options = new LZMA2Options();

options.setPreset(7); // play with this number: 6 is default but 7 works better for mid sized archives ( > 8mb)

XZOutputStream out = new XZOutputStream(outfile, options);

byte[] buf = new byte[8192];
int size;
while ((size = inFile.read(buf)) != -1)
   out.write(buf, 0, size);

out.finish();

答案 2

查看您发布的链接中zip文件的Java / SevenZip文件夹中的LzmaAlone.java和LzmaBench.java文件。


推荐