FileWriter bzw. Reader fehlerhaft

Cev Droon

Mitglied
Hi Leute,

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!

Java:
package Speichern;

import java.io.*;

public class Klasse {

	public static void main(String[] args) {
		new Klasse().savePlayerCoo();
		new Klasse().readPlayerCoo();

	}

	int xPlayer = 800;
	int yPlayer = 160;

	Writer fw;

	Reader reader;

	public void savePlayerCoo() {

		int xxPlayer;
		int yyPlayer;

		xxPlayer = xPlayer;
		yyPlayer = yPlayer;

		try {
			fw = new FileWriter("PlayerCoo.txt");
			fw.write(xxPlayer);
			fw.write(yyPlayer);
			fw.append(System.getProperty("line.separator")); // e.g. "\n"
		} catch (IOException e) {
			System.err.println("Konnte Datei nicht erstellen");
		} finally {

			if (fw != null)
				try {
					fw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
	}

	public void readPlayerCoo() {
		try {
			reader = new FileReader("PlayerCoo.txt");

			for (int c; (c = reader.read()) != -1;)
				System.out.print((char) 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);
			}
		}
	}

}

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".

Danke :toll:

Cev Droon
 
Zuletzt bearbeitet:
F

fisherman

Gast
Java:
for (int c; (c = reader.read()) != -1;)
	System.out.print((char) c);
[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.
 
Zuletzt bearbeitet von einem Moderator:

Harry Kane

Top Contributor
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.
 
Zuletzt bearbeitet:

Cev Droon

Mitglied
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:
public void readPlayerCoo() {
		try {
			reader = new FileReader("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 ;(

Weiß jemand weiter?

Cev Droon
 

kaoZ

Top Contributor
Ö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:
 
Zuletzt bearbeitet:

Cev Droon

Mitglied
Ja, ich habe eine Frage, kaoZ:

Du hast geschrieben, du würdest die BufferedReader- und writer verwenden.

Soll, ich das jetzt tun, und hilft es zur Problemlösung, oder war es bloß eine Empfehlung?

Danke,
Cev Droon
 

kaoZ

Top Contributor
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!)

Java:
package tests;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class Writer{
	
	String text; // Lazy initialisation
	File file;
	
	public Writer(String filename) {
		text = "Hallo Welt";
		file = new File(filename);
	}
	
	public void writeTextToFile() throws IOException{
		BufferedWriter writer = new BufferedWriter(new FileWriter(file));
		
		writer.write(text);
		writer.close();
	}

	public static void main(String[] args) throws IOException{
		new Writer("H:/Apps/HalloWelt.txt").writeTextToFile();
	}
}

und ein Reader könnte so aussehen:

Java:
package tests;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Reader {
	
	File file;
	
	public Reader(String filename) {
		file = new File(filename);
	}
	
	public void readDataFromFile() throws IOException{
		BufferedReader reader = new BufferedReader(new FileReader(file));
		
		String line = "";
		
		while((line = reader.readLine()) != null){
			System.out.println(line);
		}
		
		reader.close();
		
	}
	
	public static void main(String[] args) throws IOException{
		new Reader("H:/Apps/HalloWelt.txt").readDataFromFile();
	}
}

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
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
A Datei Ein und Ausgabe FileWriter und printWriter Java Basics - Anfänger-Themen 5
O Ausgabe als .txt Datei speichern mit FileWriter Java Basics - Anfänger-Themen 2
B FileWriter nicht sichtbar? Java Basics - Anfänger-Themen 4
D Methoden Filewriter macht keine Zeilenumbrüche Java Basics - Anfänger-Themen 3
D FileWriter schreibt nicht in Datei Java Basics - Anfänger-Themen 14
Z FileWriter erzeugt Symbole Java Basics - Anfänger-Themen 8
C FileWriter Problem. Java Basics - Anfänger-Themen 2
M FileWriter Neue Datei wenn aktuelle "zu groß" Java Basics - Anfänger-Themen 3
D Nur aus Interesse: Warum verwendet man FileWriter.flush()? Java Basics - Anfänger-Themen 4
B FileWriter und JFileChooser zusammenfügen Java Basics - Anfänger-Themen 3
B FileWriter close() muss? Java Basics - Anfänger-Themen 8
Java-Insel Methoden FileWriter Methoden funktionieren nicht Java Basics - Anfänger-Themen 20
D Erste Schritte Warum try-catch für FileWriter Java Basics - Anfänger-Themen 5
G Effizienzsteigerung von FileWriter als Logging Java Basics - Anfänger-Themen 4
L FileReader und Filewriter Java Basics - Anfänger-Themen 4
O Datentypen double in string über fileWriter... Java Basics - Anfänger-Themen 7
O OOP fileWriter Dateiname übergeben Java Basics - Anfänger-Themen 12
R Klassen FileWriter und CharSet Java Basics - Anfänger-Themen 4
Luk10 FileWriter Java Basics - Anfänger-Themen 6
W Problem mit FileWriter / ActionListener Java Basics - Anfänger-Themen 6
O Integer in File mit Filewriter schreiben - geht nicht richtig Java Basics - Anfänger-Themen 4
M Probleme mit FileWriter Java Basics - Anfänger-Themen 7
M FileWriter innerhalb runnable Jar Java Basics - Anfänger-Themen 8
Burny91 FileReader / FileWriter / BufferedWriter An einer bestimmten Zeile String ersetzten Java Basics - Anfänger-Themen 2
C FileWriter mit einer Variable Java Basics - Anfänger-Themen 8
S FileWriter - in neue Zeile schreiben!? Java Basics - Anfänger-Themen 19
K FileWriter Speicherort Java Basics - Anfänger-Themen 7
T OOP Speichern mit BufferedWriter(FileWriter(File)) Java Basics - Anfänger-Themen 2
S FileWriter Java Basics - Anfänger-Themen 3
S Filewriter schreibt einfach nicht Java Basics - Anfänger-Themen 6
G FileWriter -> neue Zeile Java Basics - Anfänger-Themen 13
F Seltsame Zeichen und kein Zeichenumbruch mit Filewriter Java Basics - Anfänger-Themen 4
G FileWriter Java Basics - Anfänger-Themen 3
G FileWriter Java Basics - Anfänger-Themen 6
T FileWriter Java Basics - Anfänger-Themen 5
M FileWriter Java Basics - Anfänger-Themen 18
J Problem mit FileWriter Java Basics - Anfänger-Themen 24
N Schneller als FileWriter? Java Basics - Anfänger-Themen 28
B Problem mit Filereader und filewriter Java Basics - Anfänger-Themen 20
M FileWriter-Problem Java Basics - Anfänger-Themen 2
P FileWriter schreiben? Java Basics - Anfänger-Themen 4
L Streamklassen, Filewriter und StringBuffer Java Basics - Anfänger-Themen 2
D FileWriter write? Zeilenumbruch ? Java Basics - Anfänger-Themen 4
G Prüfen mit FileWriter Java Basics - Anfänger-Themen 6
N Problem mit FileWriter Java Basics - Anfänger-Themen 2
S FileWriter-Variable nicht initialisiert Java Basics - Anfänger-Themen 3
R FileWriter: Dort wieder anfangen, wo er aufgehört hat Java Basics - Anfänger-Themen 4
S FileWriter funzt nicht :( Java Basics - Anfänger-Themen 5
A csv Reader für Java? Java Basics - Anfänger-Themen 27
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
R CSV Reader läuft nicht richtig an Java Basics - Anfänger-Themen 8
S Input/Output Reader/Writer finden file nicht Java Basics - Anfänger-Themen 3
L Klassen NFC Reader und JavaFx Problem -> threads? Java Basics - Anfänger-Themen 2
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
Textsurfer Erste Schritte CSV Import Reader Writer Java Basics - Anfänger-Themen 0
A Reader für Benutzereingabe in Eclipse importieren Java Basics - Anfänger-Themen 3
W Reader Java Basics - Anfänger-Themen 9
W Java XML-Reader: Content not allowed in Prolog Java Basics - Anfänger-Themen 7
D Jpg in BufferedImage Reader oder Array ablegen? Java Basics - Anfänger-Themen 5
H "Conways GameofLife - Vom Reader ins Array" Java Basics - Anfänger-Themen 5
Sogomn Input/Output Reader, Writer und Streams Java Basics - Anfänger-Themen 6
P txt reader Problem Java Basics - Anfänger-Themen 17
L buffered reader produziert zu viele und seltsame zeichen Java Basics - Anfänger-Themen 2
A Interface Reader interface verwenden Java Basics - Anfänger-Themen 4
S Input/Output Reader: "null" wenn While-Ende Java Basics - Anfänger-Themen 5
F Reader - brauche Hilfe Java Basics - Anfänger-Themen 19
M Reader-Problem Java Basics - Anfänger-Themen 5
Haubitze_Broese RSS-Reader? Java Basics - Anfänger-Themen 2
Haubitze_Broese Pattern für Links in RSS-Reader Java Basics - Anfänger-Themen 6
A Problem Reader Java Basics - Anfänger-Themen 39
Developer_X Sav-Data reader, fehler Java Basics - Anfänger-Themen 2
V Buffered Reader, erst ab bestimmter Zeile auslesen? Java Basics - Anfänger-Themen 8
K Probleme mit Buffered Reader Java Basics - Anfänger-Themen 8
P Buffered Reader an Anfang setzen Java Basics - Anfänger-Themen 4
D RSS Reader mit Redaktionssystem Java Basics - Anfänger-Themen 7
L Streams und Reader/Writer Java Basics - Anfänger-Themen 8
F Was gibt der Buffered Reader zurück bei Dateiende? Java Basics - Anfänger-Themen 2
T Writer/Reader Problem Java Basics - Anfänger-Themen 4
H Buffered Reader Java Basics - Anfänger-Themen 7
G Buffered REader, String, ist mein code korrekt? Java Basics - Anfänger-Themen 4
T BMI Rechner fehlerhaft Java Basics - Anfänger-Themen 18
I InputStream beim zweiten Mal fehlerhaft Java Basics - Anfänger-Themen 10
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
U Ausgabe von Dateiinhalt während Programmnutzung fehlerhaft Java Basics - Anfänger-Themen 3
N Erste Schritte Quellcode fehlerhaft Java Basics - Anfänger-Themen 2
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
P Compiler-Fehler if Bedingung fehlerhaft Java Basics - Anfänger-Themen 7
S Simple Rechnung ist fehlerhaft! Java Basics - Anfänger-Themen 13
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
T Unit tests fehlerhaft bitte um hiiiiilfe :D Java Basics - Anfänger-Themen 1
M Double-Ausgabe in JTextField fehlerhaft Java Basics - Anfänger-Themen 2
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
S Methode prüft fehlerhaft nach Eingangsvariable Java Basics - Anfänger-Themen 2
D Code Fehlerhaft finde den Fehler nicht. Java Basics - Anfänger-Themen 1
W Erste Schritte Ausgabe ist Fehlerhaft Java Basics - Anfänger-Themen 6
F Erste Schritte IF-Abfrage fehlerhaft Java Basics - Anfänger-Themen 9
Z array ausgabe fehlerhaft Java Basics - Anfänger-Themen 2
U Array Ausgabe fehlerhaft Java Basics - Anfänger-Themen 6
S Java SDK Installiert aber fehlerhaft Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben