Hallo
,
ich habe eine Frage zu Streams. Folgendes Bsp:
import java.io.File;
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 = "Hello Writers";
File file = new File("ausgabe.txt");
FileWriter fw = new FileWriter( file );
fw.write(s);
PrintWriter pw = new PrintWriter( fw );
pw.println("!");
pw.flush();
pw.close();
PrintWriter pw2 = new PrintWriter( System.out );
pw2.println(pw);
pw2.flush();
pw2.close();
}
}
Wir ihr sehen könnt, experimentiere ich gerade mit Streams.
Ich erstelle in meinem Bsp eine txt Datei, dann schreibe ich mit Hilfe von FileWriter einen String rein und sende den Datenstrom ab. Danach füge ich zu dem vorhandenen Datenstrom noch ein Zeichen hinzu und schließe dann den Datenstrom ab. Wenn ich die Datei aufmache, dann steht dort „Hello Writers!“. Jetzt wollte ich den Datenstrom auf meiner Konsole ausgeben lassen. Wenn ich aber das versuche, dann erhalte ich java.io.PrintWriter@10b62c9. Wo liegt mein Fehler, was habe ich falsch verstanden?
Danke
ne das siehst du falsch
du hast pw2 auf die Konsole umgeleitet
jetzt willst du mit println was schreiben und pw wird in einen String umgewandelt und ausgegeben. Da wird immer die toString() Methode aufgerufen und das macht diese Ausgabe.
Wenn du den Inhalt der Datei ausgeben willst dann musst du einen FileReader nehmen und sie einlesen
Danke.
Ich habe eigentlich versucht nicht den Inhalt der Datei, sondern den Inhalt des Datenstroms an die Konsole weiterzuleiten. Ich dachte ich kann mein Datenstrom umkehren und auf der Konsole ausgeben lassen. Also funktioniert das nicht? FileReader wäre in diesem Fall ein anderer Datenstrom.
ja das musst du aber vorher machen
PrintWriter pw2 = new PrintWriter( System.out );
pw2.println("huhuhu");
pw2.flush();
pw2.close();
so klappt das
Ja, diese Variante ist mir bekannt
, ich wollte aber mit pw2 den Datenstrom von pw an die Konsole weiterleiten.
Es hat ja mit FileWriter und PrintWriter funktioniert. Ich habe dort den Datenstrom beeinflüssen können und habe den verändert. Und ich dachte das wird in die umgekehrte Richtung auch gehen(mit pw und pw2). Hmm…
ne das was du an die Methode übergibst ist das was er ausgeben soll
das was du machen willst geht so nicht. Wie schon gesagt, alle out Methode greifen bei Objekten auf die toStrin Methode zurück… daher die Ausgabe
die Writer haben keine Methoden um ihren Inhalt auszugeben !
Ok danke, werde mir merken.