当前位置: 首页 > 知识库问答 >
问题:

Apache Commons使用7zip压缩

魏学智
2023-03-14

我正在尝试使用我从apache共享资源压缩示例网页获得的以下代码,以使用sevenZ类创建一个zip文件,希望它的压缩速度比常规的java zip更快。这就是我的代码的样子

public static void main(String[] args) {
    // TODO Auto-generated method stub
    try{
    BufferedInputStream instream = new BufferedInputStream(new FileInputStream("c:/temp/test.txt"));

    SevenZOutputFile sevenZOutput = new SevenZOutputFile(new File("c:/temp/7ztest.zip"));
    SevenZArchiveEntry entry = sevenZOutput.createArchiveEntry(new File("c:/temp/test.txt"),"blah.txt");
    sevenZOutput.putArchiveEntry(entry);
    byte[] buffer = new byte[1024];
    int len;
    while ((len = instream.read(buffer)) > 0) {sevenZOutput.write(buffer, 0, len);}

    sevenZOutput.closeArchiveEntry();
    sevenZOutput.close();
    instream.close();
    }catch(IOException ioe) {
        System.out.println(ioe.toString());

    }
}

我得到了这个错误,看起来很不相关

线程mainjava.lang.NoClassDefFoundError中的异常:org.tukaani.xz.FilterOptionsjava.lang.J9VMInternals.verifyImpl(本机方法)java.lang.J9VMInternals.verify(J9VMInternals.java:93)

我已经导入了apache包

进口org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;进口org.apache.commons.compress.archivers.sevenz.SevenZOutputFile;

但不确定org.tukaani.xz.FilterOptions是什么,它看起来不像是apace commons压缩的一部分。有什么想法吗?

共有1个答案

曾英睿
2023-03-14

正如Apache Commons的“已知限制”页面上所指出的:

“该格式需要其他可选的 XZ for Java 库。

这种依赖对于其他格式是可选的,但是对于7zip您需要它。

<dependency>
  <groupId>org.tukaani</groupId>
  <artifactId>xz</artifactId>
  <version>1.5</version>
</dependency>
 类似资料:
  • 我有许多zip文件,我需要分发给用户,大约130个。每个zip文件包含许多类似的文本、html、xml和jpg文件。zip文件总计146兆字节;解压缩后,它们的内容总计551MB。 我想以尽可能小的格式将所有这些文件一起分发给用户。我研究了两种不同的方法,每种方法都使用两种不同的压缩方案,zip和7zip(我理解它要么是LZMA要么是其变体): 将所有zip文件压缩到一个压缩文件中,并发送该文件(

  • 大家好 (1)命令位置 rpm -ql p7zip 结果: /usr/bin/7za (2)压缩包是:根目录只有文件夹 (3)解压命令 7za e nginx.7z -r -o./web 结果:子目录里的文件都跑到根了

  • 我有一个学校作业,要求我接受一个输入流,并使用apache commons压缩库将其压缩成一个字节数组,格式有5种(根据用户规范)。这5种格式是:ZIP、JAR、SEVENZ、BZIP2和gzip。我编写了以下方法以JAR格式压缩输入流,但得到了一个带有字符串“no current entry”的illegalStateException。

  • 我得到无效的zip,当写入文件以下代码: 我将其写入文件的方式是: 我做错了什么?

  • 我试图存储一个文件到一个ftp服务器使用apache共享java库。我正在使用commons-net-3.0.1.jar.问题是当我试图将文件推入服务器时,调用 存储文件() 始终返回false。它不会抛出任何异常。没什么,只是默默地回答错误。如果我尝试手动推送文件,即在linux系统中使用普通的“ftp”客户端(我的意思是使用ftp命令连接到ftp服务器,并使用put命令存储文件),那么它会将文

  • 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 使用 gulp 压缩 JS 访问论坛获取帮助 压缩 css 代码可降低 css 文件大小,提高页面打开速度。 我们接着将规律转换为 gulp 代码 规律 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下。 gulp 代码 你可以 下载所有示例代码 或 在线查看代码 当熟悉 使用 g