Ich habe ein Problem bezüglich der Serialisierung von Strings mit dem FileWriter und FileWriter. In folgendem Code kommt nach dem kompilieren und ausführen nur ein "?" heraus!
Weiß jemand, wieso nicht die x - und y - Koordinaten ausgegeben werden? Falls es bei der Problemlösung hilft, ich arbeite nach dem Buch "java head first".
[STRIKE]Die increment expression fehlt.[/STRIKE] (Quatsch.) [STRIKE]Abgesehen davon verwendest du hier besser eine while-Schleife, weil du nicht wissen kannst, wie viele Zeichen der Reader lesen muss/kann.[/STRIKE] Naja, while kommt als Konstrukt in diesem Fall häufiger vor als for.
Ersetze einfach "(char)c" durch "c" in deiner Ausgabemethode.
Die char´s in der Zeichentabelle an Position 160 und 800 sind wahrscheinlich nur sehr eingeschränkt druckbar.
Erst mal danke, Harry und fisherman, das Ergebnis hat sich schon mal geändert :toll:
Nur leider hat sich das Ergebnis von "?" nach "631601310" geändert
Java:
publicvoidreadPlayerCoo(){try{
reader =newFileReader("PlayerCoo.txt");for(int c;(c = reader.read())!=-1;)System.out.print(c);}catch(IOException e){System.err.println("Fehler beim Lesen der Datei!");
e.printStackTrace();}finally{try{
reader.close();}catch(Exception e){System.out.println(xPlayer + yPlayer);}}
Die Methode zum Lesen der Koordinaten des Spielers aus der Datei habe ich, wie von Harry empfohlen, geändert, nur leider kommt immer noch nicht das gewünschte Ergebnis ;(
Öhm nur am Rande, du redest hier von Serialisierung , ich sehe hier allerdings nirgends die Nutzung eines
Code:
FileOutputStreams
bzw. eines
Code:
ObjectOutputStreams
Du schreibst lediglich die Strings in eine Datei wenn ich mich jetzt nicht vollkommen verlesen habe.
Zudem nutzt du nicht die funktion die Ein- und Ausgaben zu Buffern und in einem Rutsch in die Datei zu schreiben bzw. zu lesen.
wenn dann würde ich zumindest einen
Code:
BufferedWriter
/
Code:
BufferedReader
verwenden .
Sinnvoller wäre es allerdings , dementsprechend das Objekt (Player) mit samt seinen Attributen und deren Zuständen in eine Datei zu Schreiben, und somit Persistent zu Speichern. (Serialisierung)
Wenn du dazu Fragen haben solltest , helfe ich dir gern weiter.:toll:
Dies war lediglich ein Ratschlag da es sinniger ist die Ausgabe als vollkommenes ganzes statt in jedes char für sich einzeln in die Datei zu schreiben.
Der BufferedReader und Writer verwenden ein charArray zur pufferung bzw. als cache , der es ermöglicht Eingaben und Ausgaben erst vollständig in den Assoziativspeicher zu laden und dann in einem rutsch aus diesem zu verarbeiten.
Bei Nutzung eines normalen Readers oder Writers, wird jeder Buchstabe für sich allein in die Datei geschrieben oder aus ihr gelesen, dies verursacht wesentlich mehr Auslastungen als eben die Nutzung eines puffers.
Zu deinem Problem:
Wenn du die Belegung der Attribute deines Objektes in PlainText in eine Datei Schreiben möchtest kannst du dies wie in diesem Beispiel machen ( ich habe um es übersichtlich zu halten auf Exception Handling verzichtet , dies sollte mal bei einer konkreten Implementierung niemals machen!)
falls du Fragen haben solltest, auch bezüglich der Realisierung zur Persistenten Speicherung des Objektes (Serialisierung) und nicht nur dessen Wertbelegungen als PlainText, immer raus damit