【发布时间】:2015-11-28 23:20:10
【问题描述】:
我采用了 adrien grand 的 java 存储库,为原始 LZ4 本机代码提供 JNI。
我想压缩给定输入目录下的多个文件,但 LZ4 不支持像 java zip 包中那样的多个文件压缩,所以我尝试了另一种方法,我想将所有输入文件 tar 并将其作为输入传递给LZ4 压缩器,我使用 Jtar java 包对所有输入文件进行去皮重处理。 除此之外还有其他更好的方法吗?
我遇到了许多示例代码来压缩一些字符串以及如何正确实现 LZ4 压缩器和解压缩器。 现在我想知道如何为多个文件实际实现它? 我还想澄清我是否朝着正确的方向前进。
在对所有文件进行去皮重后,根据示例代码使用说明,我现在必须将去皮重文件转换为字节数组以将其提供给压缩器模块。为此,我使用了 apache-common-ioutil 包。所以考虑到我有很多文件作为输入,这会导致 tar 的大小很大,在我看来,总是将其转换为字节数组似乎是无效的。 我想先知道这是否有效?或者有没有比这更好的使用 LZ4 包的方法?
我遇到的另一个问题是最终结果。压缩去皮重的文件后,我会得到像 MyResult.lz4 文件这样的最终结果作为输出,但我无法使用存档管理器(我正在使用 ubuntu )解压缩它,因为它不支持这种格式。 我也不清楚我必须在这里使用的存档和压缩格式。我也想知道最终结果应该是什么格式。所以现在我从用户的角度来看,考虑一个我为用户生成备份的情况,如果我提供他/她对于传统的 .zip、.gz 或任何已知格式,用户可以自行解压缩。据我所知,LZ4 并不意味着我期望用户也应该知道这种格式,对吧?看到这样的格式,他甚至可能会感到困惑。所以这意味着从 .lz4 到 .zip 格式的转换似乎也毫无意义。我已经将所有输入文件的去皮过程视为一个耗时的过程,所以我想知道它对性能的影响有多大。正如我在 java zip 包中看到的压缩多个输入文件并没有似乎根本不是问题。所以在 lz4 旁边,我遇到了 Apache common compress 和 TrueZIP。我还遇到了几个关于它们的堆栈溢出链接,这帮助我学到了很多东西。到目前为止,我真的很想使用 LZ4 进行压缩,尤其是因为它的性能,但我遇到了这些障碍。任何对 LZ4 包有深入了解的人都可以通过简单的实现为我的所有查询和问题提供解决方案。谢谢。
我为包含许多文件的输入计算的时间,
去皮所需时间:4704 毫秒
将文件转换为字节数组所需的时间:7 毫秒
压缩时间:33 毫秒
【问题讨论】:
标签: java archive compression lz4