Datei read/write

magic_halli

Erfahrenes Mitglied
Hi,

ich möchte aus einer Textdatei zeilenweise den Inhalt auslesen und wieder zeilenweise in eine andere Textdatei schreiben.
Habe schon etliche Versuche gestartet, aber immer erhalte ich Fehlermeldungen.
Hier mal mein Code:

Code:
//Variablen vereinbaren
    String nameEingabedatei = "test.txt"; 
    String nameAusgabedatei = "ausgabe.txt";
    String zeile;
    File eingabedatei; 
    File ausgabedatei;
    FileReader fr;
    FileWriter fw;
    BufferedReader br;
    BufferedWriter bw;

System.out.println("Inhalt von "+nameEingabedatei +":"); 
eingabedatei = new File(nameEingabedatei); 
fr = new FileReader(eingabedatei); 

ausgabedatei = new File(nameAusgabedatei);
fw = new FileWriter(ausgabedatei);
bw = new BufferedWriter(fw);
br = new BufferedReader(fr); 

//Ausgabe des Inhalts von test.txt und schreiben dieses Inhalts in ausgabe.txt
zeile=br.readLine(); 
	while ( zeile != null ) { 
		System.out.println(zeile); 
		zeile=br.readLine(); 
		bw.write(zeile);
	} 
bw.close();
br.close();

Alles funktioniert, bis auf den Inhalt in ausgabe.txt zu schreiben.
Was habe ich falsch gemacht?

Danke.
 
Mit dem ersten readLine() wird die erste Zeile in der Variablen abgelegt. Beim erneuten Aufruf von readLine() wird die zweite Zeile deiner Datei gelesen und in der Variablen abgelegt. Da du dein write() erst nach dem zweiten readLine() stehen hast, wird zum einen die erste Zeile deiner LeseDatei nicht übernommen und beim letzten Durchgang enthält deine Variable den Wert null, was zum Fehler führt. Vertausch einfach die letzten beiden Zeilen in der while-Schleife und dann funktionierts.

Code:
zeile=br.readLine(); 
	while ( zeile != null ) { 
		System.out.println(zeile); 
		bw.write(zeile);
                zeile=br.readLine(); 
	}

oder anstatt des oberen Codes verwendest du einfach folgenden:

Code:
while ((zeile=br.readLine()) != null ) { 
		System.out.println(zeile); 
		bw.write(zeile);
	}

hiermit sparst du dir ein readLine() und somit kommst du auch nicht in die Versuchung den oben beschriebenen Fehler zu machen ;-)
 
Natürlich... jetzt wo Du das sagst, erkenne ich meinen Fehler. Danke - funktioniert.

Eins noch:
Wie kann ich nach jeder eingefügten Zeile erstmal ein newline mit reinbringen, damit zeilenweise in die Ausgabedatei geschrieben wird - und nicht wie jetzt, alles hintereinander weg?
 
Tja, vier Augen sehen eben mehr als zwei :D

Zur Frage:
einfach ein \r\n dranhängen

Code:
bw.write(zeile+"\r\n");
 
Nochmals danke... bin mit der JavaSyntax noch nicht so vertraut, da ich grad erst angefangen habe mit Java ;) ...

Es hat sich jetzt noch eine Frage bei mir gestellt:
Wie kann ich die Eingabedatei nach einem bestimmten Wort durchsuchen? Mir fehlen einfach die Befehle hierzu - den Rest bekomme ich dann schon hin, denke ich.
 
Zurück