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