Input/Output Serialisierung Sonderzeichen

ArniBoy

Mitglied
Hi Forum,

bei der Serialisierung einer Textdatei tritt bei mir etwas komisches auf.
Code:
                /*
		 * Serialisierung des neuen SAMPA dict
		 */ 
		try {
			FileOutputStream fr=new FileOutputStream("new SAMPA Dict.txt");
			ObjectOutputStream oos=new ObjectOutputStream(fr);
			for(Entry<String, String> e:Dict.entrySet()){
				oos.writeObject(e.getKey()+" = "+e.getValue()+"\n");
				System.out.println((e.getKey()+" = "+e.getValue()+"\n"));
			}

		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

Was grob passiert ist, dass eine HashMap serialisiert werden soll. Als ich mir die Textfile ansah, sah ich alledings vor jeder Zeile irgendwelche müll-characters, die ich hier leider nicht reinkopieren kann, weil das Font hier wohl diese Zeichen nicht unterstützt.
Hier ist ein Link zu einem Screenshot..
Wenn ich mir dieselben Informationen, die serialisiert werden gleichzeitig auf der Konsole ausgeben lasse, werden die dort ganz normal angezeigt, das erste Wort, ein Gleichheitszeichen, das zweite Wort.

Weiß wer, warum das passiert?
 
Zuletzt bearbeitet von einem Moderator:
Bei der Serialisierung wird das Objekt gespeichert. Du darfst keinen Text (der für Menschen verständlich ist) erwarten. Insofern hat das schon seine Richtigkeit, was da rauskommt.

Edit ok, auf die Art und Weise wie du serialisierst habe ich jz nicht geachtet. Habe mir nur kurz das Bild angeschaut. Kroe hat ja bereits alles dazu erläutert.
 
Du verwechselst hier 2 Dinge:

1. Wenn du Java Serialisierung nutzt, brauchst du nicht eine manuelle For-Schleife. Das macht 0-Sinn. Einfach oos.writeObject(Dict) reicht vollkommen.

2. Du willst vermutlcih sowas haben wie DataOutputStream oder gar PrintStream, der genau das schreibt, was du schreibst in lesbarer Textform.

Es wäre zu krass, jetzt die Funktionsweise zu erläutert, des gibt dafür auch endlose Tuts. Aber Generell: Die "nicht lesbaren" Zeichen schreibt der OOS aus gutem Grund. Das sind Angaben darüber, wie groß oder von welcher Art die geschrieben Daten sind.

Gruß,

Chris
 
in eine Txt-Datei zu schreiben wäre mit Konsole vergleichbar, BufferedWriter, FileWriter,
du speicherst ja eh nur Strings
 

Zurück
Oben