如何在Java中控制文件压缩参数以更快地解压缩对象



我正在将创建的一些大型Java对象写入文件,然后再将其读取回来。我正在使用压缩,因为对象非常大,我有大约600个不同的实例(每个实例在一个单独的文件中)。我目前使用bzip2与Apache的org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream:

import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
import org.apache.commons.lang3.SerializationUtils;
InputStream in = new BZip2CompressorInputStream(new FileInputStream("myfile.bz2"));
Document doc = (Document) SerializationUtils.deserialize(in);

问题是当前的解压缩需要很长时间(超过10秒),因此读取所有600个对象需要大约两个小时。我想使用更快的压缩类,或者控制当前类的参数,以便更快地解压缩(我最担心的解压缩时间,因为它发生了很多次,缓慢的压缩是可以忍受的)。为了解压速度,我也愿意为更大的压缩文件付出代价。

当使用不同的软件压缩时,通常可以选择"压缩级别",值如"最快","快速","正常","最佳"。有时你甚至可以得到更多的参数,如"压缩方法","字典大小","字长"等。

有谁知道如何通过代码控制这些参数,推荐的值是什么?或者只是知道快速减压课程?

BZip2获得了非常好的压缩比,但代价是相当慢。在频谱的另一端是像snappy这样的东西,它的速度非常快,但压缩比没有那么好。GZip在中间

最新更新