Java:如何修改控制台输出?

时间:2011-07-15 07:44:03

标签: java command-line console

我需要编写一个简单的基于终端的程序,

  1. 使用BufferedReader包装的FileReader从文件中读取一些文本。
  2. 将此文本打印到控制台,用户应该可以对其进行修改。
  3. 在输入+ S时,程序应读取修改后的文本并将其保存回原始文件。
  4. 总而言之,我们的想法是为没有GUI的类Unix环境编写文本编辑器。

    但是,我在步骤2和3中遇到了问题。

    1. System.out打印的所有文本都是不可变的。我该如何改变这种行为?

    2. 如何为Enter + S实现一个键监听器。我可以使用GUI轻松完成它,但是如何在基于控制台的程序中添加监听器?在输入程序时,只需在修改后的文本中添加一个新行即可。 另外,如何阅读已经打印到终端的文本?

    3. P.S。我必须使用JDK 1.4,因此如果相关,则无法访问Scanner和Console类。我也认为在Java中不可能完成这样的任务,所以你可以在C / C ++中建议一个解决方案毕竟,他们在MS-DOS时代以某种方式做到了。

      谢谢!

3 个答案:

答案 0 :(得分:4)

您需要的是charva之类的内容。它是一个Java库,可以完成旧的termcap / termio / curses / ncurses库在24 x 80终端时所做的事情。

Charva(和curses等)通过向终端或终端仿真器发送控制代码和/或转义序列来移动光标,写入和擦除字符等工作。在现代系统中,它们依赖于提供ANSI或VT100终端仿真的控制台......或类似的东西。

答案 1 :(得分:1)

这些事情在Unix中使用curses库完成:http://en.wikipedia.org/wiki/Curses_(programming_library)

答案 2 :(得分:1)

http://sourceforge.net/projects/javacurses/你需要这样的东西。试着找一些免费的java curses库