Primero, me temo que su pregunta contiene un pequeño error. No hay una línea de escritura de métodos en la clase Console. En su lugar, la clase Console proporciona el método escritor () que devuelve PrintWriter. Este escritor de impresión tiene println ().
Ahora, ¿cuál es la diferencia entre
System.console().writer().println("hello from console");
y
System.out.println("hello system out");
Si ejecuta su aplicación desde la línea de comandos, creo que no hay diferencia. Pero si la consola no está disponible, System.console () devuelve nulo mientras System.out todavía existe. Esto puede suceder si invoca su aplicación y realiza la redirección de STDOUT al archivo.
Aquí hay un ejemplo que acabo de implementar.
import java.io.Console;
public class TestConsole {
public static void main(String[] args) {
Console console = System.console();
System.out.println("console=" + console);
console.writer().println("hello from console");
}
}
Cuando ejecuté la aplicación desde el símbolo del sistema, obtuve lo siguiente:
$ java TestConsole
console=java.io.Console@93dcd
hello from console
pero cuando redirigí el STDOUT al archivo ...
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
La línea 8 es console.writer().println()
.
Aquí está el contenido de / tmp / test
console=null
Espero que mis explicaciones ayuden.