一些程序以一种用户体验像更改值的字符串而不是打印的行(bash 向下滚动以能够显示所有更改的输出)的方式向 bash 生成输出。这种现象叫什么?它是如何在 java 程序或 bash 脚本中实现的。如何解析输出?它只是打印新行但使用一些特殊功能吗?
top 就是一个利用这种输出数据“现象”的程序
使用了 Okey 游标。
那我怎么用java解析它们呢?我试过这段代码,但它没有打印任何东西
public static void exeTest(String [] args) throws IOException{
if (args.length <= 0) {
System.out.println("empty command");
return;
}
Process process = new ProcessBuilder(args).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
System.out.printf("Output of running %s is:",
Arrays.toString(args));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
感谢所有好的答案,我现在对这个主题更加熟悉,即使我仍然无法解析程序输出,如 java 中的顶部输出。我将关闭这个问题并做更多关于如何在 java 中解析它的研究。然后我可能会开始另一个更具体的关于用 java 解析输出的问题。
最佳答案
不是打印整行(如 println
或打印 %n
),而是写退格字符(\b
)或空回车没有换行符 (\r
) 将光标移回要打印的内容前面。
关于java - Bash 非滚动终端输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17961865/