首先,我担心你的问题包含一些错误。 类Console中没有方法writeline。 相反,类Console提供了返回PrintWriter的方法writer()。 这个打印作者有println()。
现在有什么区别
System.console().writer().println("hello from console");
和
System.out.println("hello system out");
如果从命令行运行应用程序,我认为没有区别。 但是,如果控制台不可用,System.console()将返回null,而System.out仍然存在。 如果您调用应用程序并执行STDOUT重定向到文件,则可能会发生这种情况。
这是我刚刚实现的一个例子。
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");
}
}
当我从命令提示符运行应用程序时,我得到以下内容:
$ java TestConsole
console=java.io.Console@93dcd
hello from console
但是当我将STDOUT重定向到文件时......
$ java TestConsole >/tmp/test
Exception in thread "main" java.lang.NullPointerException
at TestConsole.main(TestConsole.java:8)
第8行是console.writer().println()。
这是/ tmp / test的内容
console=null
我希望我的解释有所帮助。