前言
本文通过两种方法讲述了 Java 如何清空控制台输出,达到类似 Linux 中 top
命令的效果。
两种方法均在 Linux 环境中测试通过,Windows 环境请自行测试,理论可行。
下列代码需要在控制台执行才会有清除控制台效果,在 IDE 中执行无效。
使用 ASCI 控制码清空控制台
通过输出 ASCI 控制码清空控制台,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
public class ConsoleClear { public static void main(String[] args) { for (int i = 0; i < 100; i++) { System.out.println(i); } System.out.print("\033[H\033[2J"); System.out.fulsh(); } }
|
另外,ASCI 控制码还可以实现前景色、背景色、下划线、消隐、闪烁效果的设置以及光标控制,具体方法请阅读参考文档。
通过 ProcessBuilder 清空控制台
ProcessBuilder 本质上是调用了系统命令来达到清空控制台的效果,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| import java.io.IOException;
public class ConsoleClear { public static void main(String[] args) { for (int i = 0; i < 100; i++) { System.out.println(i); } try { final String os = System.getProperty("os.name"); if (os.contains("Windows")) { new ProcessBuilder("cmd", "/c", "cls") .inheritIO() .start() .waitFor(); } else { new ProcessBuilder("clear") .inheritIO() .start() .waitFor(); } } catch (final IOException | InterruptedException e) { System.out.println("Clear Console Failed."); } } }
|
可以将 ProcessBuilder 部分代码封装一下,这里为了便于理解,直接写了两次。
不存在的方法三
网上还盛传另一种方法,核心代码是:
1
| Runtime.getRuntime().exec("cls");
|
我自己亲测无效,各位看官感兴趣的话还请自行踩坑 / 避坑。
参考文档
- 终端/控制台设置颜色字体、光标定位和清屏 — 印林泉
- java 控制台输出 颜色代码 — 夜半听风吟
- java 在Cmd命令行实现清屏 — 蓝蓝223