Как получить вывод программы Java ТОЧНО, как если бы она работала на терминале? - PullRequest
0 голосов
/ 30 июня 2018

Я могу перенаправить вывод в файл или другой поток вывода с помощью System.setOut(...), но если я это сделаю:

System.out.print("\rTesting")
System.out.print("\rHello world!")

Тогда на терминале я бы просто увидел "Привет, мир!" в конце, но если я пишу в файл, я печатаю все символы и ТОЛЬКО хочу получить «Hello world!»

Я мог бы написать собственный OutputStream, который делает это, но я хочу обрабатывать вещи, идентичные моему терминалу, такие как обработка странных escape-последовательностей, таких как \ 033 [2K. Я пытался использовать cat, echo и tee и перенаправлять в файл, но все это дает мне полную последовательность символов.

Решения для конкретной платформы хороши (хотя в идеале оно должно работать, по крайней мере, на любом разумном дистрибутиве Linux). Я даже в порядке с командой bash или чем-то, что позволит мне сделать это.

1 Ответ

0 голосов
/ 30 июня 2018

Здесь происходит то, что вы используете CR (\ r) вместо LF (\ n). В вашем случае это означает, что вы сначала печатаете строку номер 1, а затем прыгаете полностью влево, но вы Не прыгаете вниз на одну строку, и в результате ваша первая строка исчезает за второй.

...