[JAVA] codierten Huffman Stream abspeichern

Hallo,

ich soll hier einen Algorithmus zur Huffmancodierung schreiben. Soweit hab ich auch alles. Als Ergebnis bekomme ich jetzt einen codierten Stream und einen Baum.

Wie kann ich das jetzt am Besten in eine einzige Datei abspeichern?

Ich dachte bis jetzt an folgendes:

a:2
s:3
...
001
00
0100
...

Also als erstes alle Elemente des Baums mit den jeweiligen Haeufigkeiten jeweils in eine Zeile und dann einfach die Elemente untereinander weg in jeweils eine Zeile.

aber macht das so Sinn, oder ist gibt es da nicht einfachere Wege?

Sorry, aber ich beschaeftige mich normalerweise nicht mit solchen Sachen =:wink:

Danke und Ciao! Bjoern

Moien

Wie kann ich das jetzt am Besten in eine einzige Datei
abspeichern?

Muss es möglichst klein sein oder soll’s erstmal nur gespeichert werden ?

Ich dachte bis jetzt an folgendes:

Du solltest die Anzahl der Zeichen angeben, sonst weiss man beim einlesen nicht direkt wo der Baum aufhört.

a:2
s:3

001
00
0100

Wenn die 001…usw ASCII-Zeichen sind hast du einen Grossteil der Komprimierung von Huffman wieder verloren. Ich wette sogar die Dateien werden eher grösser als kleiner.

Ausserdem muss man bei Huffman keine Abgrenzungen zwischen den Codes machen, d.h. alles in eine Zeile schreiben geht auch. Es verkompliziert allerdings das auslesen und debuggen des Programms.

Deinen aktuellen Ansatz kann man mit BufferedWriter BW = new BufferedWriter ( new Filewriter (…datei …)); umsetzen. BW.writeline(…text…); erzeugt eine Zeile in der Datei, am Ende muss ein BW.close(); kommen.

cu