console.writeline
和System.out.println
之间的技术区别到底是什么?我知道System.out.println
会写入标准输出,但这与控制台不是一回事吗?
我不完全理解console.writeline
的documentation。
发布于 2010-10-24 02:55:02
首先,我担心你的问题包含一个小错误。类Console中没有方法writeline。相反,类Console提供了返回PrintWriter的方法编写器()。此打印编写器具有println()。
现在有什么区别呢?
System.console().writer().println("hello from console");
和
System.out.println("hello system out");
如果你从命令行运行你的应用程序,我认为没有区别。但是如果控制台不可用,当System.out仍然存在时,System.console()返回null。如果调用应用程序并执行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
我希望我的解释能有所帮助。
发布于 2010-10-24 02:48:36
在Java中没有Console.writeline
。它在.NET中。
控制台和标准输出不同。如果您阅读mentioned的Javadoc页面,您将看到应用程序只有在从命令行调用时才能访问控制台,并且输出不会像这样被重定向
java -jar MyApp.jar > MyApp.log
其他类似的情况在SimonJ的回答中也有涉及,尽管他没有提到没有Console.writeline
。
发布于 2022-02-16 14:38:12
System.out
引用PrintStream的一个实例。
System.console.writer
引用PrintWriter的一个实例。
https://stackoverflow.com/questions/4005378
复制相似问题