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

ivt*_*ivt 3 java console command-line

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

  1. 使用包装在 BufferedReader 中的 FileReader 从文件中读取一些文本。
  2. 将此文本打印到控制台,用户应该能够修改它。
  3. 按 Enter + S 后,程序应读取修改后的文本并将其保存回原始文件。

总而言之,这个想法是为没有 GUI 的类 Unix 环境编写一个文本编辑器。

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

  1. System.out 打印的所有文本都是不可变的。我怎样才能改变这种行为?

  2. 如何为 Enter + S 实现按键监听器。我可以使用 GUI 轻松实现,但是在基于控制台的程序中如何添加监听器?在 Enter 上,程序应该简单地向修改后的文本添加一个新行。另外,如何阅读已打印到终端的文本?

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

谢谢!

Ste*_*n C 5

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

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