我想压缩给定输入目录下的多个文件,但是LZ4不支持像Java zip包一样的多文件压缩,因此我尝试了另一种方法,即把所有输入文件打成tar包并将其作为输入流传递给LZ4压缩器,我使用了Jtar Java包来打tar包。除了这种方法,还有其他更好的方法吗? 我找到了许多样例代码来压缩字符串以及如何正确实现LZ4压缩器和解压缩器。现在我想知道如何实际应用于多个文件?我也想澄清我的方向是否正确。 在打完tar包后,根据样例代码使用说明,我需要先将tar包转换为字节数组,然后将其提供给压缩器模块。我使用apache-common-ioutil包来完成转换。考虑到我有很多输入文件,而且tar包很大,总是把它转换为字节数组似乎对我来说不太有效。我想先知道这是否有效?或者是否有更好的方法使用LZ4包比这更好? 我遇到的另一个问题是最终结果。在压缩tar文件之后,我将得到一个名为MyResult.lz4的输出文件,但是我无法使用存档管理器(我使用ubuntu)解压缩它,因为它不支持这种格式。我也不清楚此处要使用的档案和压缩格式。我还想知道最终结果应该是什么格式。所以现在我从用户角度来看待这个问题,考虑一下如果我为用户生成备份,如果我为他/她提供传统的.zip、.gz或任何已知格式,用户将能够自己解压缩它。我知道LZ4并不意味着我必须期望用户也应该了解这种格式,对吗?他甚至可能在看到这种格式时感到困惑。这意味着从.lz4转换到.zip格式似乎也毫无意义。我已经看到打tar包所有输入文件的过程非常耗时,所以我想知道它会影响多少性能。我已经在Java zip包中看到压缩多个输入文件似乎根本不是问题。所以在LZ4之后,我遇到了Apache common compress和TrueZIP。我还找到了一些关于它们的stackoverflow链接,这些链接帮助我学了很多。目前我真的想使用LZ4进行压缩,尤其是由于它的性能,但我遇到了这些障碍。有没有对LZ4包有很好了解的人提供我的所有问题和问题的解决方案以及简单的实现方法呢?谢谢。
我计算出一个由多个文件组成的输入所需的时间,
打tar包需要的时间:4704毫秒
把文件转换为字节数组需要的时间:7毫秒
压缩需要的时间:33毫秒