package javacodebook.io.setstdstreams;

import java.io.*;

/**
 *  Die Standard-Streams für Ausgabe und Fehlerausgabe können umgeleitet werden, z.B.
 *  in eine Datei. Damit können Fehlerprotokolle oder Log-Dateien erstellt werden.
 *  Die Standardausgabe/Eingabe und Fehlerausgabe werden in der Klasse java.lang.System
 *  verwaltet. Dort können sie mit den entsprechenden Methoden umgeleitet werden.
 */
public class SetStdStreams {

    public static void main(String[] args) {
        try {
            String dateiName = "c:\\ausgabe.log";
            if(args.length > 0)
                dateiName = args[0];

            //Umleitung der Standardausgabe in eine Datei:
            //Zuerst wird ein FileOutputStream definiert, dann ein
            //PrintStream, damit die Methode println zur Verfügung steht.
            //Der PrintStream wird als Ausgabestrom an System übergeben
            FileOutputStream f = new FileOutputStream(dateiName);
            PrintStream p = new PrintStream(f);
            System.setOut(p);
            System.out.println("Diese Ausgabe wurde in eine Datei umgeleitet");
        }
        catch(FileNotFoundException e) {
            System.err.println("Datei konnte nicht geöffnet werden");
            e.printStackTrace(System.err);
        }
    }
}