问题标签 [apache-commons-compress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
231 浏览

java - 列出 tar 存档内容(java commons compress)返回可变数量的条目,然后流关闭异常。怎么修?

我在google和stackoverflow上研究了这个问题很长一段时间。不幸的是,我似乎找不到任何似乎可以解决此问题的资源。诚然,我的 search-fu 不是最好的;非常感谢任何帮助、示例或指向相关资源的指针。

以下代码是我列出来自TarArchiveInputStream的存档内容的方法:

如上所述,我希望获得档案中的条目列表。不幸的是,该方法似乎只能获取随机数量的目录条目。这个数字因每个存档而异(使用 4 个不同的测试),从 0 个条目到 12 个条目。抛出的异常是IOException,具体来说是Stream Closed

我不太精通 Apache Commons Compress 库(显然),而且我真的不太了解任何十六进制编辑器,无法在档案中四处挖掘,看看是否有一些非 POSIX 的东西绊倒了。不过,我认为entry.isFile()条件可以避免这种复杂性。

正如我所提到的,非常感谢任何帮助或资源!蒂亚!

编辑:虽然那里的代码(在第一条评论的帖子参考中)似乎基本上可以归结为与我使用的相同,但实际上我确实删除了我的代码并使用了那里的代码,几乎逐字记录。仍然得到完全相同的错误:Stream Closed。我确实设法找到了一些可能有线索的东西。我试着换掉我交出BufferedInputStream的原件的包装InputStream。这会立即导致Stream Closed错误,而不是在BufferedInputStream一些存档列表之后关闭。肯定还在寻找提示。

0 投票
1 回答
107 浏览

java - 档案解压/解压过程中的进度信息

目前,我正在尝试在 zip 文件的解压缩过程中获取进度信息。

我正在深入研究具有所有需要的压缩/解压缩算法等的 commons-compress,但我缺少的是以某种方式获取进度信息的东西......在解压缩过程中为用户提供信息控制台等上的示例。我错过了什么吗?也许我还没有仔细阅读文档?

我已经通过使用 java.util.Zip 了解了一些东西,但是 commons compress 是一个更通用的库,它支持不同的格式......

0 投票
1 回答
676 浏览

java - 使用 7z 的 Commons Compress 使 Stream 不是 BZip2 格式

我有这个受密码保护的 7z 存档,可以单独使用 7z 正确打开和提取。但是使用下面的代码:

导致此异常:

请注意,如果您取消注释for循环并注释掉while循环,它实际上会在存档中打印(唯一的)文件名。它getNextEntry触发了关于 BZip2 格式的异常。

我无法找到有关此问题的任何错误报告。当然,我认为这可能是密码错误,所以我将其更改为一些垃圾,以查看结果,但随后它在消息中给出了不同的异常建议,可能是密码不正确。所以,看起来密码肯定是正确的,但我无法解压缩文件。

我的类路径中还有 xz-1.8.jar (org.tukaani.xz)。

我也尝试过SevenZFile构造函数SeekableByteBuffer,但弹出完全相同的异常。

有什么线索吗?

0 投票
0 回答
53 浏览

apache-commons - 在 Apache Nutch 上解析时出现 NoSuchMethodException

我正在使用 Apache Nutch 1.13 爬行。在解析步骤中,我收到此错误。我无法生成导致此错误的 url

我追踪了日志,但我无法理解这个问题。任何帮助将不胜感激!

0 投票
1 回答
855 浏览

java - 在 Java 中使用的最快和最节省内存的 BZip2 解压缩工具是什么

当前使用 Apache Commons Compress 包,它使用了大约 60% 的整体堆空间,在解压 BZip2 文件时大约需要 6 分钟来解压大约 500 个文件,每个 4-5Mb。

我的主要问题是我找不到任何可以与此性能进行比较的东西,我找到了 AT4J,但是按照文档实现它会导致 ArrayIndexOutOfBoundsException 在尝试将其中一个文件读入缓冲区时。对于它确实设法处理的少数文件,性能非常相似,并且 AT4J 包含来自 Commons Compress 的压缩器类以提供“额外选项”这一事实意味着这是意料之中的。

有谁知道用于解压缩 BZip2 文件的任何其他 Java 库,如果知道,它们是否与 Apache 有任何比较?

提前致谢。

0 投票
1 回答
1229 浏览

java - 从 TarArchiveInputStream 中获取 InputStream

我正在从 FTP 获取文件。我得到的文件是文本文件或 tar.gz

对于文本文件,我只是将它们发送到 S3。如果我遇到一个 tar.gz 我想解压它并用相同的方法保存每个文件。

我尝试保存entry直接使用new FileInputStream(entry.getFile()),但这返回null。

我需要制作一个saveTarStreamToS3()还是可以从 TarArchiveInputStream 制作一个 InputStream?

0 投票
1 回答
1021 浏览

java - 使用 Apache Commons compress 解压缩 Tar 文件时发生异常

我正在尝试将 tar 文件解压缩为map使用 Apache commons compress in Java。我能够解压缩大多数 tar 文件,但很少有因以下异常而失败。我不确定是什么导致了这个问题。tar 文件是否损坏?我可以在 Windows 中使用 7zip 解压文件,但是当以编程方式解压文件时,相同的文件会失败。我正在使用 Appache commons-compress 1.18

下面是我的代码

0 投票
1 回答
106 浏览

java - Java 有选择地从 zip 中复制文件,以便保留文件时间戳

我遵循以下方法使用apache commons compress解压缩 zip :

但是由于我使用 OutputStream& IOUtils.copy(ais, os); (下面的代码)来解压缩和复制文件,因此不会保留时间戳。是否有另一种方法可以直接从 zip 复制文件,以便保留文件时间戳。

编辑:在下面jbx 的回答的帮助下,以下更改将使其工作。

0 投票
0 回答
533 浏览

java - 无法使用带有 Java7 和 Java8 的 ZipInputStream 提取 zip64 存档

我正在使用以下代码从 zip 存档中提取文件。

此代码适用于普通 zip 存档,但不适用于 zip64 存档。据我所知,Java7/Java8(ZipInputStream 类)应该支持 zip64,但出现以下异常。

但是,我能够使用 commons-compress ZipArchiveInputStream 从 zip64 中提取文件。

知道为什么使用 Java API (ZipInputStream) 无法实现同样的效果。

0 投票
1 回答
721 浏览

java - 使用 apache commons compress library 压缩 InputStream

我有一个学校作业,要求我使用 apache commons compress library 接收输入流并将其压缩为具有 5 种格式之一(由用户规范)的字节数组。5 种格式是:ZIP、JAR、SEVENZ、BZIP2 和 GZIP。我编写了以下方法来压缩 JAR 格式的输入流,但我得到了一个带有字符串“No current entry”的非法状态异常。