Java: как я могу изменить вывод консоли? - PullRequest
3 голосов
/ 15 июля 2011

Мне нужно написать простую терминальную программу, которая должна,

  1. Читать некоторый текст из файла, используя FileReader, обернутый в BufferedReader.
  2. Распечатать этот текст на консолипользователь должен иметь возможность изменить его.
  3. После Enter + S программа должна прочитать измененный текст и сохранить его обратно в исходный файл.

Подводя итог, идеяэто написать текстовый редактор для Unix-подобных сред без GUI.

Однако у меня проблемы с шагами 2 и 3.

  1. Весь текст, который печатаетсяSystem.out является неизменным.Как я могу изменить это поведение?

  2. Как мне реализовать ключевой слушатель для Enter + S. Я могу легко сделать это с GUI, но что я добавляю слушатель в консолипрограмма?А при вводе программа должна просто добавить новую строку в измененный текст.Кроме того, как я могу прочитать текст, который уже был напечатан на терминале?

PS Я должен использовать JDK 1.4, поэтому нет доступа к классам Scanner и Console, если это имеет отношение.Я также думаю, что такую ​​задачу было бы невозможно выполнить в Java, поэтому вы могли бы предложить решение в C / C ++. В конце концов, они сделали это как-то еще в эпоху MS-DOS.

Спасибо!

Ответы [ 3 ]

4 голосов
/ 15 июля 2011

Что вам нужно, это что-то вроде чарва .Это библиотека Java, которая делает то, что делали старые библиотеки termcap / termio / curses / ncurses во времена терминалов 24 x 80.

Charva (и curses и т. Д.) Работают, отправляя управляющие коды и / или escapeпоследовательности к терминалу или эмулятору терминала для перемещения курсора, записи и удаления символов и так далее.В современной системе они зависят от консоли, обеспечивающей эмуляцию терминала ANSI или VT100 ... или что-то в этом роде.

1 голос
/ 15 июля 2011

http://sourceforge.net/projects/javacurses/ вам нужно что-то подобное.Попробуйте найти бесплатную библиотеку java curses

1 голос
/ 15 июля 2011

Подобные вещи выполняются в Unix с библиотекой curses: http://en.wikipedia.org/wiki/Curses_(programming_library).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...