Java中LZW压缩算法的实现。
LZW是一种压缩算法,该算法是由Abraham Lempel,Jacob Ziv和Terry Welch.在其最基本的形式中创建的,它将输出一个压缩文件作为一系列固定长度代码字。可变宽度的代码字可用于增加字典填充时的代码字输出的大小。FURTHER,一旦字典填充,算法就可以停止添加模式并仅使用已经发现的模式继续添加模式,或者仅通过已发现的模式继续进行压缩,或者该算法可以重置代码本以找到新的模式。
该项目是对LZW压缩算法的修改,用于使用可变宽度的代码字,并在某些条件下(在某些条件下可选地重置代码簿)。有了这些更改,我将修改的LZW代码的性能与课程教科书中的LZW代码进行了比较,并与广泛使用的压缩应用程序的性能进行了比较。
通过运行javac MyLZW.java来编译程序。
有3种模式可以运行此项目:
LZW.java实现)。在压缩过程中,该程序应选择哪种模式。任何用于压缩文件的模式也应用于扩展文件。用户无需说明用于扩展的模式。用于压缩文件的模式将存储在输出文件的开头,以便可以在扩展过程中自动检索。为了建立压缩过程中要使用的模式,该程序将接受3个命令行参数:
*“ n”不做任何模式
*“ R”重置模式
*“ M”用于监视模式
请注意,提供的LZW代码已经接受命令行参数,以确定是否应执行压缩或扩展(分别为“ - ”和“+”),并且通过标准I/O重定向提供了输入/输出文件(“ <”以指示输入文件和“>”以指示输出文件)。为了压缩文件foo.txt以使用重置模式生成foo.lzw,您应该能够运行:
java MyLZW - r < foo.txt > foo.lzw类似地将foo.lzw扩展到foo2.txt,您应该运行:
java MyLZW + < foo.lzw > foo2.txt