[Erledigt] Text aus einer Datei lesen

Hi alle,

es ist mir schon fast peintlich diese Frage zu stellen, aber nach so einer großen Pause, habe ich schon fast alles vergessen was ich gelernt habe und muss jetzt fast wieder von null anfangen. :twisted:

Ich bin jetzt wieder bei Streams gelandet und habe mit der Klasse “File” eine Textdatei erstellt und mit hilfe von Klassen “FileWriter” und “PrintWriter” in die Datei einen String reingeschrieben. Jetzt möchte ich das was in der Datei steht, in der Konsole anzeigen. Mit welcher Klasse kann ich das machen? Welche Klasse kann eine Textdatei lesen? Ich will danach mit:

PrintWriter pw2 = new PrintWriter(System.out);
pw2.print(/*Klasse die ich benötige um die Textdatei zu lesen*/);
pw2.close();

in der Konsole das wieder ausgeben.

Schade dass ich so vieles verlernt habe, die Pause war zu groß. Naja kann man nichts machen.

EDIT:

ich habe es so versucht, nur bekomme ich “null”.

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


public class Ausgabe {

	public static void main(String[] args) throws IOException {
		String s, s2;
		
		s = "Das ist ein Test.";
		
		//Datei erstellen und Text reinschreiben
		File f = new File ("datei.txt");
		FileWriter fw = new FileWriter(f);
		PrintWriter pw = new PrintWriter(fw);
		
		//Lesen aus dieser Datei
		FileReader fr = new FileReader("datei.txt");
		BufferedReader br = new BufferedReader(fr);
		s2 =  br.readLine();
		PrintWriter pw2 = new PrintWriter(System.out);
		
		pw.println(s);
		pw.close();

		pw2.print(s2);
		pw2.close();
	}

}

Gut das ich da mal etwas vorgearbeitet hab :wink:
http://wiki.coding-community.net/wiki/Daten_einlesen_(Java)

Hallo,

ich habe mir alles durchgelesen, ich habe aber nicht alles verstanden was dort steht. Ich habe nicht ganz verstanden wofür InputStreamReader gut ist. Ich habe FileReader der die Datei lesen kann und dann puffere das mit dem BufferedReader. Sollte das nicht ausreichen?

InputStreamReader in = new InputStreamReader(socket.getInputStream());

Die Methode socket, kennt eclipse nicht, was ist das eigentlich?

		//Lesen aus dieser Datei
		FileReader fr = new FileReader("datei.txt");
		BufferedReader br = new BufferedReader(fr);

		String line;
		while((line=br.readLine())!=null)
		System.out.println(line);

Hier bekomme ich wieder eine “null”.

der InputStreamReader ist eine Wrapper Klasse dafür wenn du nur einen InputStream hast aber doch einen Reader benutzen willst → Stream in InputStreamReader → in …Reader

das socket ist ein Objekt vom Socket :wink:

aber eigentlich sollte deine Sache da passen, in der Datei ist was drin?
trag mal System.out.println(new File(„datei.txt“).exist()); ein

Hmm :eek: ,

es klappt :twisted: . Ich habe 10 mal versucht und es ging nicht. Nachdem ich die Ecplise neugestartet habe, gings. Hat er irgendwas nicht aktuallisiert, kann so was passieren?

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


public class Ausgabe {

	public static void main(String[] args) throws IOException {
		String s, s2;
		
		s = "Das ist ein Test!";
		
		//Datei erstellen und Text reinschreiben
		File f = new File ("datei.txt");
		FileWriter fw = new FileWriter(f);
		PrintWriter pw = new PrintWriter(fw);

		pw.println(s);
		pw.close();
		
		//Lesen aus dieser Datei
		FileReader fr = new FileReader("datei.txt");
		BufferedReader br = new BufferedReader(fr);
		PrintWriter pw2 = new PrintWriter(System.out);
		
		s2 = br.readLine();
		pw2.println(s2);	
	}
}

Warum klappt es mit PrintWriter nicht? Mit System.out.println geht, aber mit mit PrintWriter funktioniert nicht, auf der Konsole wird nichts angezeigt.

eigentlich nicht aber in solchen Fällen einfach Project --> clean machen das hilft da meistens (auch bei anderen unerklärlichen Fällen)

Unter dem Quellcode habe ich eine Frage gestellt :smiley:

mach mal flush() bzw schließe dein Streams (Reader)

Stimmt, danke dir. Habe ganz vergessen diesen Stream zu schließen.

close ruft flush auf.

also wenn du fertig bist einfach close() aufrufen… falls waehrend des schreibens schon der buffer geleert werden soll einfach flash()