你好堆栈溢出!
我目前正在研究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命令提示符界面之外。)
答案 0 :(得分:1)
在MacOS(以及GNU / Linux和* BSD)上,clear
是一个独立程序,不需要其他Shell或程序的服务。只需直接调用即可:
new ProcessBuilder("clear").inheritIO().start().waitFor();
或者简单地打印等效的ANSI转义码以清除屏幕并将光标设置为原点。这可以在所有类似Unix的标准终端上使用,实际上clear
最终会完成以下工作:
System.out.print("\u001B[H\u001B[J");