我采用了 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 ms
将文件转换为字节数组
所需的时间:7 ms 压缩所需的时间:33 ms