为什么我要在标准流上使用java.io.Console?

时间:2012-03-09 23:13:55

标签: java

我意识到这可能是一个重复的问题,例如Why Use java.io.Console?。但是,我想要一个更详细的答案(优点/缺点,应用程序,还有更多)。

如果我误解了这个,请原谅我。所以我使用eclipse运行了一个程序,我收到了错误消息“No Console”,所以我只是让它通过Terminal运行它。但是,我有点不清楚为什么控制台对象这样做(我认为这是因为它返回null,但我想要一个更详细的答案)。从各种读取,似乎各种IDE,如Netbeans和Eclipse没有正确“实现”这一点。所以它引出了我的问题,因为这是我第一次看到java.io.Console,为什么我要在标准流中使用它?使用控制台的应用程序的示例值得赞赏和首选!

1 个答案:

答案 0 :(得分:4)

interactive shells编写的程序为命令行用户提供了很多便利

  • 标签完成
  • 历史跟踪
  • 密码输入安全抵御肩膀冲浪者
  • 彩色和格式化输出
  • 使用首选寻呼机进行分页文字

Console允许通过命令行调用的java程序为在交互式shell中调用它的用户提供良好的用户体验。

例如,Console.readLine可能听起来与BufferedReader.readLine非常相似,但当程序从交互式bash shell运行时,其行为类似于UNIX readline

  

描述

     

readline将从终端读取一行并将其返回,并使用提示作为提示。如果prompt为NULL或空字符串,则不会发出提示。返回的行分配了malloc(3);调用者必须在完成后释放它。返回的行删除了最后的换行符,因此只保留行的文本。

     

readline在用户输入行时提供编辑功能。默认情况下,行编辑命令与emacs类似。还有一个vi风格的线编辑界面。

     

...

     

SEARCHING

     

Readline提供了用于在命令历史记录中搜索包含指定字符串的行的命令。有两种搜索模式:增量和非增量。


  

为什么我要在标准流中使用它?

如果您的程序产生文本输出,并且其用户可能包含经常在交互式shell中调用它的系统管理员,则他们可能会从Console中受益。