如何在 Windows 上清除 Java 中的控制台
how to clear console in Java on Windows
我很想知道如何在 Windows 中清除控制台。我尝试了一些命令,但没有任何效果
Runtime.getRuntime().exec("cls");
这对我不起作用。
我想知道 Java 中是否有清除终端的方法,或者是否有外部库可以做到这一点。
@Olivier 回答的 link 确实有效,但不幸的是,大多数建议使用 sub-process cls
或者不解释如何在 Windows 上启用。
在最新的 Windows 10 中,您可以在 Window 终端中使用 ANSI 代码支持,但不能直接在 CMD.EXE 控制台中使用。要为 CMD.EXE 直接添加 ANSI colours and then you can print the appropriate ANSI/VT codes 这些答案中提到的注册表项 VirtualTerminalLevel
而无需 运行 a sub-process:
System.out.print("3[2J3[1;1H");
或
System.out.print(ANSI.CLEAR_SCREEN+ANSI.position(1, 1));
其中 ANSI 代码的简单定义是:
public class ANSI {
// Control Sequence Introducer:
public static String CSI = "\u001b[";
public static String CLEAR_SCREEN = CSI+"2J";
public static String position(int row, int col) {
return CSI+row+";"+col+"H";
}
}
请注意,其他终端或 IDE 中的终端可能不支持上述内容。
我很想知道如何在 Windows 中清除控制台。我尝试了一些命令,但没有任何效果
Runtime.getRuntime().exec("cls");
这对我不起作用。
我想知道 Java 中是否有清除终端的方法,或者是否有外部库可以做到这一点。
@Olivier 回答的 link 确实有效,但不幸的是,大多数建议使用 sub-process cls
或者不解释如何在 Windows 上启用。
在最新的 Windows 10 中,您可以在 Window 终端中使用 ANSI 代码支持,但不能直接在 CMD.EXE 控制台中使用。要为 CMD.EXE 直接添加 ANSI colours and then you can print the appropriate ANSI/VT codes 这些答案中提到的注册表项 VirtualTerminalLevel
而无需 运行 a sub-process:
System.out.print("3[2J3[1;1H");
或
System.out.print(ANSI.CLEAR_SCREEN+ANSI.position(1, 1));
其中 ANSI 代码的简单定义是:
public class ANSI {
// Control Sequence Introducer:
public static String CSI = "\u001b[";
public static String CLEAR_SCREEN = CSI+"2J";
public static String position(int row, int col) {
return CSI+row+";"+col+"H";
}
}
请注意,其他终端或 IDE 中的终端可能不支持上述内容。