【问题标题】:What is the difference between the "standard streams" and the "Console"?“标准流”和“控制台”有什么区别?
【发布时间】:2011-12-15 23:46:51
【问题描述】:

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

【问题讨论】:

  • 请更具体。你是说System.outSystem.err的工作原理吗?
  • 请详细说明您的问题。
  • @normalocity 你能回答这个问题吗?
  • 谁能回答这个问题?
  • 如果人们要求您更具体,那么在 cmets 中要求他们回答您的问题而实际上没有更具体是没有帮助的..

标签: java


【解决方案1】:

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

某些程序在最初(或最终重定向)流时无法访问控制台。其他程序在它们从未访问过控制台的配置中启动。在后一种情况下,写入System.out 的所有内容都可能已写入/dev/null

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 这并不能真正回答问题。有System.console(),它返回一个Console 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 2011-05-03
    相关资源
    最近更新 更多