java - sirve - Restablecimiento del flujo de salida estándar
java.io definicion (2)
Esta es una vieja pregunta, pero aparece en la búsqueda de Google todo el tiempo y quería corregirla. En realidad puede obtenerlo, utilizando la clase FileDescriptor
. Llamar al new PrintStream(new FileOutputStream(FileDescriptor.out)))
debería darle algo que imprima en stdout.
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;
public static void main(String [] args) {
System.err.println("error.");
System.out.println("out.");
System.setOut(System.err);
System.out.println("error?");
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
System.out.println("out?");
}
Sé que hay una función en Java para establecer el flujo de salida estándar a cualquier valor definido por el usuario utilizando el método System.setOut
.
Pero, ¿hay algún método para restablecer la salida estándar a la que se almacenó anteriormente o la que es salida estándar?
Puede obtener el descriptor de archivo para la salida estándar a través de FileDescriptor.out
. Para restablecer la impresión estándar a la consola, lo haces
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
Otra forma es simplemente aferrarse al objeto original, de la siguiente manera:
PrintStream stdout = System.out;
System.setOut(new PrintStream(logFile));
// ...
System.setOut(stdout); // reset to standard output