问题标签 [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.
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
一些存档列表之后关闭。肯定还在寻找提示。
java - 档案解压/解压过程中的进度信息
目前,我正在尝试在 zip 文件的解压缩过程中获取进度信息。
我正在深入研究具有所有需要的压缩/解压缩算法等的 commons-compress,但我缺少的是以某种方式获取进度信息的东西......在解压缩过程中为用户提供信息控制台等上的示例。我错过了什么吗?也许我还没有仔细阅读文档?
我已经通过使用 java.util.Zip 了解了一些东西,但是 commons compress 是一个更通用的库,它支持不同的格式......
java - 使用 7z 的 Commons Compress 使 Stream 不是 BZip2 格式
我有这个受密码保护的 7z 存档,可以单独使用 7z 正确打开和提取。但是使用下面的代码:
导致此异常:
请注意,如果您取消注释for
循环并注释掉while
循环,它实际上会在存档中打印(唯一的)文件名。它getNextEntry
触发了关于 BZip2 格式的异常。
我无法找到有关此问题的任何错误报告。当然,我认为这可能是密码错误,所以我将其更改为一些垃圾,以查看结果,但随后它在消息中给出了不同的异常建议,可能是密码不正确。所以,看起来密码肯定是正确的,但我无法解压缩文件。
我的类路径中还有 xz-1.8.jar (org.tukaani.xz)。
我也尝试过SevenZFile
构造函数SeekableByteBuffer
,但弹出完全相同的异常。
有什么线索吗?
apache-commons - 在 Apache Nutch 上解析时出现 NoSuchMethodException
我正在使用 Apache Nutch 1.13 爬行。在解析步骤中,我收到此错误。我无法生成导致此错误的 url
我追踪了日志,但我无法理解这个问题。任何帮助将不胜感激!
java - 在 Java 中使用的最快和最节省内存的 BZip2 解压缩工具是什么
当前使用 Apache Commons Compress 包,它使用了大约 60% 的整体堆空间,在解压 BZip2 文件时大约需要 6 分钟来解压大约 500 个文件,每个 4-5Mb。
我的主要问题是我找不到任何可以与此性能进行比较的东西,我找到了 AT4J,但是按照文档实现它会导致 ArrayIndexOutOfBoundsException 在尝试将其中一个文件读入缓冲区时。对于它确实设法处理的少数文件,性能非常相似,并且 AT4J 包含来自 Commons Compress 的压缩器类以提供“额外选项”这一事实意味着这是意料之中的。
有谁知道用于解压缩 BZip2 文件的任何其他 Java 库,如果知道,它们是否与 Apache 有任何比较?
提前致谢。
java - 从 TarArchiveInputStream 中获取 InputStream
我正在从 FTP 获取文件。我得到的文件是文本文件或 tar.gz
对于文本文件,我只是将它们发送到 S3。如果我遇到一个 tar.gz 我想解压它并用相同的方法保存每个文件。
我尝试保存entry
直接使用new FileInputStream(entry.getFile())
,但这返回null。
我需要制作一个saveTarStreamToS3()
还是可以从 TarArchiveInputStream 制作一个 InputStream?
java - 使用 Apache Commons compress 解压缩 Tar 文件时发生异常
我正在尝试将 tar 文件解压缩为map
使用 Apache commons compress in Java。我能够解压缩大多数 tar 文件,但很少有因以下异常而失败。我不确定是什么导致了这个问题。tar 文件是否损坏?我可以在 Windows 中使用 7zip 解压文件,但是当以编程方式解压文件时,相同的文件会失败。我正在使用 Appache commons-compress 1.18
下面是我的代码
java - Java 有选择地从 zip 中复制文件,以便保留文件时间戳
我遵循以下方法使用apache commons compress解压缩 zip :
但是由于我使用 OutputStream
& IOUtils.copy(ais, os);
(下面的代码)来解压缩和复制文件,因此不会保留时间戳。是否有另一种方法可以直接从 zip 复制文件,以便保留文件时间戳。
编辑:在下面jbx 的回答的帮助下,以下更改将使其工作。
java - 无法使用带有 Java7 和 Java8 的 ZipInputStream 提取 zip64 存档
我正在使用以下代码从 zip 存档中提取文件。
此代码适用于普通 zip 存档,但不适用于 zip64 存档。据我所知,Java7/Java8(ZipInputStream 类)应该支持 zip64,但出现以下异常。
但是,我能够使用 commons-compress ZipArchiveInputStream 从 zip64 中提取文件。
知道为什么使用 Java API (ZipInputStream) 无法实现同样的效果。
java - 使用 apache commons compress library 压缩 InputStream
我有一个学校作业,要求我使用 apache commons compress library 接收输入流并将其压缩为具有 5 种格式之一(由用户规范)的字节数组。5 种格式是:ZIP、JAR、SEVENZ、BZIP2 和 GZIP。我编写了以下方法来压缩 JAR 格式的输入流,但我得到了一个带有字符串“No current entry”的非法状态异常。