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

Java:如何修改控制台输出?,java,command-line,console,Java,Command Line,Console,我需要写一个简单的基于终端的程序 使用BufferedReader中包装的FileReader从文件中读取一些文本 将此文本打印到控制台,用户应该能够修改它 输入+S后,程序应读取修改后的文本并将其保存回原始文件 总之,我们的想法是为没有GUI的类Unix环境编写一个文本编辑器 但是,我对步骤2和步骤3有问题 System.out打印的所有文本都是不可变的。我怎样才能改变这种行为 我如何为Enter+S实现一个键侦听器。我可以用GUI轻松地实现它,但是在基于控制台的程序中,我应该向其中添加一个侦

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

  • 使用BufferedReader中包装的FileReader从文件中读取一些文本
  • 将此文本打印到控制台,用户应该能够修改它
  • 输入+S后,程序应读取修改后的文本并将其保存回原始文件
  • 总之,我们的想法是为没有GUI的类Unix环境编写一个文本编辑器

    但是,我对步骤2和步骤3有问题

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

  • 我如何为Enter+S实现一个键侦听器。我可以用GUI轻松地实现它,但是在基于控制台的程序中,我应该向其中添加一个侦听器吗?输入时,程序只需在修改后的文本中添加一行。 另外,如何读取已打印到终端的文本

  • 另外,我必须使用JDK1.4,所以如果相关的话,就不能访问Scanner和Console类。我还认为这样的任务在Java中是不可能完成的,所以你可以用C/C++提出一个解决方案。毕竟,他们在MS-DOS时代就已经这样做了


    谢谢大家!

    这类事情是在Unix中使用curses库完成的。

    您需要的是类似的东西。它是一个Java库,与旧的termcap/termio/curses/ncurses库在24 x 80终端时代所做的一样


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

    你需要类似的东西。尝试查找一些免费的java诅咒库

    System.out打印的所有文本都是不可变的。我怎样才能改变这种行为?
    你这是什么意思?他的意思是,通常在打印出来后,你不能回去更改它。@cularis我的意思是,一旦“Hello World”被打印出来,你就不能将其退格为“Hello”。人们总是出于某种原因问这个问题:)不,它实际上是一个面向没有GUI的嵌入式系统的真实程序。这是一件有趣的事情……并且可能满足用户825089的目的。谢谢斯蒂芬,我也觉得它很有用。谢谢你,那确实很有帮助。一定会查出来的。谢谢,我甚至不知道这些诅咒是什么。首先,我们必须了解他们的基本情况。