将ProcessBuilder命令转换成Linux可以理解的内容

时间:2018-08-06 20:57:02

标签: java windows macos processbuilder

你好堆栈溢出!

我目前正在研究Java程序,该程序本质上是《龙与地下城》风格冒险的数字化字符表。该程序广泛使用了我制作的ClearScreen()方法,该方法利用了流程构建器,如下所示:

new ProcessBuilder( "cmd", "/c", "cls" ).inheritIO().start().waitFor();

最近,我了解到我的一个播放器装有Mac,因此我需要将此流程构建器使用的cmd命令转换为与Mac / Linux等效的命令。我已经事先进行了一些研究,并设法构建了以下ProcessBuilder:

new ProcessBuilder("terminal","","clear");

但是,我不知道/c的含义是什么,它是导致命令执行后CMD关闭的参数。因此,我想帮助您填写遗漏的论点(或者也许是获得相同结果的更有效方法)。预先谢谢你!

(此外,对于任何误用的术语,我也要事先道歉^^;我仍在学习如何用Java编程,而且我从未拥有过Mac,因此我有点在黑暗中跌跌撞撞。应该使用名为.bat的{​​{1}}文件来说明程序运行在Windows命令提示符界面之外。)

1 个答案:

答案 0 :(得分:1)

在MacOS(以及GNU / Linux和* BSD)上,clear是一个独立程序,不需要其他Shell或程序的服务。只需直接调用即可:

new ProcessBuilder("clear").inheritIO().start().waitFor();

或者简单地打印等效的ANSI转义码以清除屏幕并将光标设置为原点。这可以在所有类似Unix的标准终端上使用,实际上clear最终会完成以下工作:

System.out.print("\u001B[H\u001B[J");