如何在Java中使用LZMA SDK进行压缩/解压
http://www.7-zip.org/sdk.html 这个网站提供了一个用于压缩/解压缩文件的 LZMA SDK,我想尝试一下,但我迷失了。
有人有这方面的经验吗?或者教程?谢谢。
http://www.7-zip.org/sdk.html
This site provide a LZMA SDK for compress/decompress files, I would like to give it a shot but I am lost.
Anyone got experience on this? Or a tutorial? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
简短的回答:不要
7zip sdk 很旧且无人维护,它只是 C++ 库的 JNI 包装器。现代 JVM (1.7+) 上的纯 Java 实现与 C++ 实现一样快,并且依赖性和可移植性问题更少。
看看 http://tukaani.org/xz/java.html
XZ 是一个文件基于 LZMA2(LZMA 的改进版本)的格式
发明 XZ 格式的人构建了 XZ 存档压缩/提取算法的纯 java 实现
XZ 文件格式设计为仅存储 1 个文件。因此,您需要首先将源文件夹 zip/tar 到单个未压缩文件中。
使用 java 库就像这样简单:
Short answer: don't
The 7zip sdk is old and unmaintained and it's just a JNI wrapper around the C++ library. A pure Java implementation on a modern JVM (1.7+) is as fast as a C++ one and has less dependecies and portability issues.
Have a look at http://tukaani.org/xz/java.html
XZ is a file format based on LZMA2 (an improved version of LZMA)
The guys that invented the XZ format build a pure java implementation of the XZ archive compression / extraction algorithms
The XZ file format is designed to store 1 file only. Thus you need to zip/tar the source folder(s) into a single uncompressed file first.
Using the java library is as easy as this:
从您发布的链接中查看 zip 文件的 Java/SevenZip 文件夹中的 LzmaAlone.java 和 LzmaBench.java 文件。
Check out the LzmaAlone.java and LzmaBench.java files in the Java/SevenZip folder of the zip file from that link you posted.
使用 J7Zip。它是 LZMA SDK 的 java 端口。您可以在这里找到它:
http://sourceforge.net/projects/p7zip/files/J7Zip/< /a>
替代方案
将 lzmajio.jar 与 LzmaInputStream 和 LzmaOutputStream 类一起使用,
您可以在 github 上找到它:
http://github .com/league/lzmajio/downloads
Use J7Zip. Its a java port of the LZMA SDK. You find it here:
http://sourceforge.net/projects/p7zip/files/J7Zip/
alternative
Use the lzmajio.jar with LzmaInputStream and LzmaOutputStream classes
you find it on github:
http://github.com/league/lzmajio/downloads
您可以使用这个库代替。它已经“过时”但仍然工作正常。
Maven 依赖项
实用程序类
首先,您必须创建一个包含要开始压缩的内容的文件。您可以使用此网站生成随机文本。
压缩和解压缩示例
You can use this library instead. It is "outdated" but still works fine.
Maven dependency
Utility class
Firstly you have to create a file with content to start compressing. You can use this website to generate random text.
Example compression and decompression
以下是使用 XZ Utils 纯 java 库通过 LZMA2 压缩打包和解包 XZ 档案的测试示例具有很大比例的算法。
Here are tested examples of using XZ Utils pure java library to pack and unpack XZ archives with LZMA2 compression algorithm with great ratio.
https://mvnrepository.com/artifact/org.tukaani/xz/1.8
Android 的 Kotlin 代码:
Java 代码:
https://mvnrepository.com/artifact/org.tukaani/xz/1.8
Kotlin code for Android:
Java code: