Java-计算文件压缩
有没有一种方法可以通过读取文件来获得可能的压缩比?Java-计算文件压缩,java,file,compression,zip,rar,Java,File,Compression,Zip,Rar,有没有一种方法可以通过读取文件来获得可能的压缩比? 你知道,有些文件比其他文件更可压缩。。。我的软件必须告诉我文件可能压缩的百分比。 e、 g. 压缩比:50%->如果我压缩文件,可以节省50%的空间 压缩率:99%->如果压缩文件,我只能节省1%的空间如果不检查文件,这是不可能的。您所能做的唯一一件事是,通过实际压缩和测量,根据从相对较大的样本中收集的统计数据,按文件扩展名获得一个近似比率。例如,统计分析可能会显示.zip、.jpg不是高度可压缩的,但.txt和.doc等文件可能高度可压缩 这
你知道,有些文件比其他文件更可压缩。。。我的软件必须告诉我文件可能压缩的百分比。
e、 g.
压缩比:50%
->如果我压缩文件,可以节省50%的空间压缩率:99%
->如果压缩文件,我只能节省1%的空间如果不检查文件,这是不可能的。您所能做的唯一一件事是,通过实际压缩和测量,根据从相对较大的样本中收集的统计数据,按文件扩展名获得一个近似比率。例如,统计分析可能会显示.zip、.jpg不是高度可压缩的,但.txt和.doc等文件可能高度可压缩 这样做的结果仅用于粗略的指导,在某些情况下可能会有很大的偏差,因为文件扩展名绝对不能保证可压缩性。该文件可以包含任何内容,无论扩展名是什么
更新:假设您可以检查该文件,那么您可以使用
java.util.zip
API读取原始文件并对其进行压缩,然后查看前后的差异。不检查该文件是不可能的。您所能做的唯一一件事是,通过实际压缩和测量,根据从相对较大的样本中收集的统计数据,按文件扩展名获得一个近似比率。例如,统计分析可能会显示.zip、.jpg不是高度可压缩的,但.txt和.doc等文件可能高度可压缩
这样做的结果仅用于粗略的指导,在某些情况下可能会有很大的偏差,因为文件扩展名绝对不能保证可压缩性。该文件可以包含任何内容,无论扩展名是什么
更新:假设您可以检查该文件,那么您可以使用
java.util.zip
API读取原始文件并对其进行压缩,然后查看前后的差异。首先,这在很大程度上取决于您选择的压缩方法。第二,我严重怀疑,如果没有时间和空间复杂度的计算,它是否可能与实际的压缩相比。我认为最好的办法是压缩文件,跟踪已经生成的文件的大小,然后删除/释放(显然,一旦完成),而不是将其写出来
要真正做到这一点,除非您真的想自己实现它,否则使用该类可能是最容易的,尤其是该类及其
deflate
方法 首先,这在很大程度上取决于您选择的压缩方法。第二,我严重怀疑,如果没有时间和空间复杂度的计算,它是否可能与实际的压缩相比。我认为最好的办法是压缩文件,跟踪已经生成的文件的大小,然后删除/释放(显然,一旦完成),而不是将其写出来
要真正做到这一点,除非您真的想自己实现它,否则使用该类可能是最容易的,尤其是该类及其
deflate
方法 首先,你需要学习信息理论。信息论领域有两种理论:
您的估计将或多或少与ZIP的默认压缩算法(deflate)相同。是同一想法的更高级版本(请注意,它会占用大量内存!)。实际上,它使用熵来确定块边界,从而将文件分割为同质数据。首先,您需要学习信息论。信息论领域有两种理论: