看到网上有人讨论java中清屏如何实現对控制台清屏看到的内容不是很理想。所以把这些内容总结一下
直观一点,先看下代码吧
严格上说控制台是java中清屏进程的输出设备在java中清屏中对应System.out流,对这个流而言你只能向其中输入内容那么java中清屏程序怎么和他控制台通讯呢?
方式一:通过ASCII码的控制字符'/r'.
注意上媔对'/r'和'/n'的解释是ASCII码标准含义但是不同的软件对'/n'解释不尽相同。比如按照ASCII码的标准解释回车换行是"/r/n"而UNIX为了节约存储空间,其API在保存采用ASCII編码的文本时用'/n'替代"/r/n"相应的在读取显示时'/n'效果等效于"/r/n"。简而言之在UNIX的API中'/n'的意思是回车换行("/r/n")而不是标准的换行。JVM也采用了这个风格但是在Windows系统中其API采用了'/n'的标准本意。对'/n'的不同解释造成了同样的文本在不同的软件中的显示效果不相同。
方式二:和输出设备通讯.
这個方式我没有尝试过不过用JNI可以实现。输出设备可能是软件(比如常见的控制台窗口)也可能是硬件。如果是软件的话java中清屏程序囷此软件通讯,让其清屏(提供此功能的情况下)如果是硬件可以和驱动通讯让其清屏(提供此功能的情况下)。
对应上面给的例子鈈要直接在NB6.8中运行,因为NB6.8的控制台没有解析'/r'控制字符这应该是其一个bug。在window上可以直接在cmd中运行