Как прокрутить вывод текста в Java?
Скажем, у меня есть терминал с 30 линиями высоты.
И скажем, у меня есть цикл, который выводит 100 строк вывода
for(int i=0; i<100; i++){
System.out.println(i);
}
Можно ли вывести первые 30 строк, показать текст с надписью "Нажмите ввод, чтобы продолжить вывод...", показать следующие 30 строк, когда пользователь нажмет ввод, и т. Д.?
Я хочу сделать это как можно проще. Если я могу использовать less
так или иначе, это было бы отлично.
Обновить
Это должно быть реализовано в исходном коде Java. Следующее не является подходящим решением:
java program | less'
Кроме того, мне нужно программно получить высоту терминала, в котором он выполняется.
3 ответа
Либо пройти tput cols
в вашу Java-программу в виде командной строки arg или системного свойства (java -DTermHeight=`tput cols`) или извлеките ее во время выполнения, используя Runtime.getRuntime().exec("tput cols")
Сохраните это значение в переменной height
, Сейчас
height = (height==0?30:height);
for(int i=1; i<=100; i++) {
if (i % height== 0) {
System.out.println("Press enter to continue output...");
System.in.read();
}
System.out.println(i);
}
С меньшим:
java program | less
или же
for(int i=0; i<100; i++){
if( i % 30 == 0) {
System.out.println("Press enter to continue output...");
System.in.read();
}
System.out.println(i);
}
В Java:
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
for(int i=0; i<100; i++){
if (i % 30 == 0) {
System.out.println("Press enter to continue output...");
r.readLine();
}
System.out.println(i);
}