使用JNI实现Windows下的控制台清屏(JDK13)
事情的起因是这样的:学校的实验课要求做一个棋类的应用,自己设计spec来实践软件知识。然而在设计显示棋盘的时候,我震惊地发现使用Windows下Java实现控制台清屏还真的没什么办法。为了更新棋盘,当然要频繁清空控制台的显示。控制台作为显示本来就够low了,要是再没点要求,那也太混了。
网上查找了一圈,总体来说有几种:
①:打印到输出一堆空行,直接把上一层的输入顶出显示区域。简直要把人看乐了。这有什么用啊??鼠标滚轮挪一挪,拙劣的实现方法就暴露无遗了。这就好像大学校舍里的破旧宿舍楼,留在校园内部,外部用一圈好看的大楼藏住,有什么用啊,大学是公共区域谁都能进,往里一看就都知道了。
②:stackoverflow上的答案,被人用机翻翻了好几个版本,意思是调用RunTime.getRuntime().exec(“cls”)来执行命令行的清屏命令。可是在IDEA中实际用了一下却报错,不知道为什么找不到这个命令,明明在cmd中直接cls是可以的啊?也许是IDEA的问题。不过后来我不纠结这一点了,因为原来这个方法的效果是在新开的进程中执行命令,那样的话即便cls能执行,也不能影响到当前进程。网上似乎还有方法将标准输出重定向,但是为了实现一个清屏功能,显得过于大费周章。
③:使用Java本地方法,调用本地的c语言的dll,c中的函数只需要System(“cls”)就行了,很方便。不过这方面网上的教程都不是很全