Konsolenausgabe in Textdatei umleiten

TomSto

Mitglied
Ich versuche gerade den Inhalt der Konsole in die TExtdatei umzuleiten und habe da ein paar Probleme:



Zitat:
--------------------------------------------------------------------------------
Original geschrieben von Thomas Darimont



Code:
--------------------------------------------------------------------------------

FileWriter fw = new FileWriter(new OutputStreamWriter(System.out));
...
fw.flush();
fw.close();




--------------------------------------------------------------------------------



Gruß Tom
--------------------------------------------------------------------------------



Bei der Initialisierung die Tom hier verwendet bekomme ich folgenden Fehler:

The constructor FileWriter(OutputStreamWriter) is undefined

Ich habe es mal so probiert:


Code:
--------------------------------------------------------------------------------

FileWriter fw = null;
OutputStreamWriter out = null;
try
{
out = new OutputStreamWriter (System.out);
fw = new FileWriter(Dateiname);
fw.write(out.flush());
out.close();
fw.close();

}//try



--------------------------------------------------------------------------------



Von meinem Verständins her, denke ich mir das so:
mit fw.write schreibe ich in das Textfile, mit out.flush() den Inhalt der Konsole/der noch gepufferten Daten.

nur leider bekomme ich fw.write(out.flush()); eine Fehlermeldung:

The method write(int) in the type OutputStreamWriter is not applicable for the arguments (void).

Kann mir bitte jemand weiterhelfen?!

Danke!
 
Hallo!

Hmmm seltsam, das funktionierte mal ...

dann nimm eben das hier:

Code:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;

public class FileLogger {

	public static void main(String[] args) {
		File file = new File("C:/java.log");
		try {
			System.setOut(new PrintStream(new FileOutputStream(file,true)));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		System.out.print(System.currentTimeMillis());
		System.out.print(": ");
		System.out.print("Hallo");
		System.out.println(" Welt!");
	}
}
Gruß Tom
 
Du kannst das Programm auch von der Konsole mit

java programm.jar > textdatei.txt

ausführen. dann wird die ganze Konsolenausgabe in die Textdatei geschrieben.
 
Danke Tom, funktioniert nun.

Habe noch eine Frage... ;)

Die Konsolenausgabe wird ja nun dirket in die Textdatei umgeleitet.
Leider erfolgt keine Konsolenausgabe an sich mehr.
Ich sollte aber folgendes Programmieren:

Das Programm liefert das Ergbnis als Konsolenausgabe. Dann soll eine Abfrage kommen, ob man die Ausgabe speichern möchte. Bei ja, soll dann die Ausgabe in eine Textdatei geschrieben werden.

Kann ich das realisieren?
Die Abfrage habe ich schon programmiert. Ausgabe auch... ;)
nur ist der Rest möglich?

Original geschrieben von squeaker
Du kannst das Programm auch von der Konsole mit

java programm.jar > textdatei.txt

ausführen. dann wird die ganze Konsolenausgabe in die Textdatei geschrieben.

Danke für den Tipp, nur leider muss ich aus dem Programm eine exe machen und zuerst die Ausgabe in der Konsole und dann in die TXT.

gruss
 
Wenn du dir Thomas seinen Code in dem anderen Thread anschaust, den du zu diesem Thema erstellt hast, findest du eine Möglichkeit die Konsoleneingabe bei Eingabe eines bestimmten Schlüsselbegriffs zu beenden etc.

Ich finde, ein bisschen selbst nachdenken, wäre schon angebracht ;)

Viel Spaß beim EXE erstellen ..
 
Servus !

Original geschrieben von teppi
Wenn du dir Thomas seinen Code in dem anderen Thread anschaust, den du zu diesem Thema erstellt hast, findest du eine Möglichkeit die Konsoleneingabe bei Eingabe eines bestimmten Schlüsselbegriffs zu beenden etc.

Was Du meinst ist wohl:
String exitCode = "EXIT";

Das ist aber nicht was ich benötige....

Mein Programm liefert folgende Konsolenausgabe:

Auswertung der Datei: ping.txt
Startzeit: 14:16:31
Endzeit: 21:28:25
______________________
Anzahl loss 0%: 1206
Anzahl loss 10%: 2
Anzahl loss 20%: 0
Anzahl loss 30%: 0
Anzahl loss 40%: 0
Anzahl loss 50%: 0
Anzahl loss 60%: 0
Anzahl loss 70%: 0
Anzahl loss 80%: 0
Anzahl loss 90%: 0
Anzahl loss 100%: 0
____________________
Insgesamt wurden 1208 Durchlaeufe ausgefuehrt.
Moechten Sie das Ergebnis speichern? (j/n)

Nun habe ich eine Abfrage eingebaut, um abzufragen, ob eine Speicherung des Ergebnisses erwünscht ist.
Falls ja, dann soll die obige Konsolenausgabe in ein Textfile geschrieben werden.

Wenn ich Tom's Beisepiel benutze, bekomme ich die Konsolenausgabe in ein Textfile, jedoch bleibt die eigentliche Ausgabe innerhalb der Konsole aus.
Meine einziger Lösungsatz wäre der, das ich bei der "ja" Auswahl die Konsolenausgabe nocheinmal durchlaufen lasse, aber dieses mal dann direkt in das Textfile. Ist etwas umständlich.
Daher meine Frage, ob dass denn auch noch anderst funktioniert.

gruss
 
Du kannst dir Strings einfach in bspw. einem StringBuffer bis zum Ende zwischenspeichern .. und bei "JA" schreibst du den Inhalt eben in eine Datei ... Problematisch wird das dann nur wegen den Zeilenumbrüchen .. aber da gibts bspw. beim BufferedWriter die Methode newLine() ..
 
Hi,

wie kann ich den
System.setOut(new PrintStream(new FileOutputStream(textfile,true)));
wieder beenden, damit ich anschliessend wieder in der Konsole ausgeben kann?
habe es jetzt mit einer wiederholung gelöst und möchte noch eine kleine info in der konsole ausgeben, damit erfolgreich gespeichert wurde?!

danke!
 
Normalerweise müsste doch so etwas wie:
.close() funktionieren.

Nur leider finde ich kein Objekt, welches ich schliessen kann.
--> System.setOut(new PrintStream(new FileOutputStream(textfile,true)));
bei nem BufferedReader o.ä. ist dies ja ohne Problem möglich, da ich ein Objekt ja zuerst instantiere...
BufferedReader br = new ...
br.close....

Muss ich jetzt zuerst ein System.setIn() machen, damit ich wieder normal in der Konsole ausgeben kann?
oder liege ich total falsch?

gruss
 
Zurück