Zuerst fürchte ich, Ihre Frage enthält einen kleinen Fehler. In der Klasse Console gibt es keine Methoden-Writeline. Stattdessen stellt die Klasse Console die Methode writer () bereit, die PrintWriter zurückgibt. Dieser Printwriter hat println ().
Was ist nun der Unterschied zwischen
System.console().writer().println("hello from console");
und
System.out.println("hello system out");
Wenn Sie Ihre Anwendung über die Befehlszeile ausführen, gibt es meines Erachtens keinen Unterschied. Wenn die Konsole jedoch nicht verfügbar ist, gibt System.console () null zurück, solange System.out noch vorhanden ist. Dies kann passieren, wenn Sie Ihre Anwendung aufrufen und STDOUT in eine Datei umleiten.
Hier ist ein Beispiel, das ich gerade implementiert habe.
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");
}
}
Als ich die Anwendung über die Eingabeaufforderung ausführte, wurde Folgendes angezeigt:
$ java TestConsole
console=java.io.Console@93dcd
hello from console
aber als ich das STDOUT in die Datei umgeleitet habe ...
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
Zeile 8 ist console.writer().println()
.
Hier ist der Inhalt von / tmp / test
console=null
Ich hoffe meine Erklärungen helfen.