Eine Implementierung des LZW -Komprimierungsalgorithmus in Java.
LZW ist ein Komprimierungsalgorithmus, der 1984 von Abraham Lempel, Jacob Ziv und Terry Welch erstellt wurde. In seiner grundlegendsten Form wird eine komprimierte Datei als eine Reihe von Codewörtern mit fester Länge ausgegeben. Variable-Breiten -Codewors können verwendet werden, um die Größe der Codewords-Ausgaben zu erhöhen, da das Wörterbuch ausgefüllt wird.
Dieses Projekt ist eine Modifikation des LZW-Komprimierungsalgorithmus zur Verwendung variabler Breiten-Codewors und zum Zurücksetzen des Codebuchs unter bestimmten Bedingungen. Mit diesen Änderungen habe ich die Leistung des modifizierten LZW -Code mit dem LZW -Code im Kurslehrbuch und mit der Leistung einer weit verbreiteten Komprimierungsanwendung verglichen.
Kompilieren Sie das Programm, indem Sie javac MyLZW.java ausführen.
Es gibt 3 Modi, um dieses Projekt auszuführen:
LZW.java implementiert). Welcher Modus sollte vom Programm während der Komprimierung verwendet werden. Welchen Modus auch immer zum Komprimieren einer Datei verwendet werden, sollte auch zur Erweiterung der Datei verwendet werden. Der Benutzer ist nicht verpflichtet, den Modus für die Erweiterung anzugeben. Der Modus, der zum Komprimieren einer Datei verwendet wird, wird am Anfang der Ausgabedatei gespeichert, sodass er während der Erweiterung automatisch abgerufen werden kann. Um den Modus zu ermitteln, der während der Komprimierung verwendet wird, akzeptiert das Programm 3 Befehlszeilenargumente:
* "n" für do Nothing -Modus
* "R" für den Reset -Modus
* "M" für den Monitor -Modus
Beachten Sie, dass der bereitgestellte LZW-Code bereits ein Befehlszeilenargument akzeptiert, um festzustellen, ob Komprimierung oder Erweiterung durchgeführt werden sollte ("-" bzw. "+") und dass Eingabedateien über Standard-E/A-Umleitung angegeben werden ("<", um eine Eingabedatei und ">" anzugeben, um eine Ausgabedatei anzugeben). Um die Datei foo.txt zu komprimieren, um Foo.lZW mit dem Reset -Modus zu generieren, sollten Sie in der Lage sein, auszuführen:
java MyLZW - r < foo.txt > foo.lzw ähnlich um Foo.lZW in foo2.txt zu erweitern, sollten Sie ausführen:
java MyLZW + < foo.lzw > foo2.txt