“标准流”和“控制台”之间有什么区别?

时间:2011-10-26 18:59:00

标签: java

Java中的“标准流”(System.outSystem.inSystem.err)和“控制台”(System.console())之间有什么区别?

2 个答案:

答案 0 :(得分:2)

每个进程(不仅仅是Java程序)都有三个流:in,out和error。在Java中,对这些的访问已简化为System.in,System.out和System.err。这些用于读取或写入命令行。例如,如果您有一个命令行程序要求输入,您输入然后按Enter键,那么该输入就会变为标准输入。

有两个流(out和err),因为它们报告不同的东西。例如,您可能希望保存错误输出,但不关心程序打印出的通用输出。或者您可能希望抑制标准输出,因此只打印错误。或者你有一个包含各种问题的程序,你想要抑制错误,这样你就可以看到它正在尝试做什么,而不是1000万个堆栈跟踪。

因此,对您的问题的简短回答是标准流是写入控制台和从控制台读取的方式。

答案 1 :(得分:0)

简而言之,控制台可以捕获流并将其显示在屏幕上。每个程序都可以访问输入/输出流,但并不是每个程序都可以访问控制台。

某些程序最初(或最终重定向)的流会失去对控制台的访问权限。其他程序在配置中启动,从而无法访问控制台。在后一种情况下,写入System.out的所有内容也可能已写入/dev/null

虽然这适用于Java,但控制台(以及流的“另一面”)实际上是操作系统概念。