用java命令清除屏幕

Java中的哪个命令可以让您在命令行应用程序中清除控制台?

我认为OP想要的是清除屏幕并将光标移动到原位。 为此尝试:

final String ANSI_CLS = "\u001b[2J"; final String ANSI_HOME = "\u001b[H"; System.out.print(ANSI_CLS + ANSI_HOME); System.out.flush(); 

这取决于您的控制台,但如果它支持ANSI转义序列 ,那么试试这个..

 final static String ESC = "\033["; System.out.print(ESC + "2J"); 

运行此示例程序:它演示了如何使用转义序列清除控制台并将光标重新定位到位置X = 1,Y = 1。

我在几个Linux终端上测试过它。 不知道,如果它在Windows下工作。
也许你可以告诉我;)

阅读有关转义序列的文章 。

 import java.io.*; public class Main { public static final char ESC = 27; public static void main(String[] args) throws Exception { Console c = System.console(); if (c == null) { System.err.println("no console"); System.exit(1); } // clear screen only the first time c.writer().print(ESC + "[2J"); c.flush(); Thread.sleep(200); for (int i = 0; i < 100; ++i) { // reposition the cursor to 1|1 c.writer().print(ESC + "[1;1H"); c.flush(); c.writer().println("hello " + i); c.flush(); Thread.sleep(200); } } } 

清除屏幕通常需要发送特定于运行应用程序的屏幕/终端的特殊控制序列。 选项:

  1. 如果您知道您将始终在特定终端下运行并且可以找到适当的控制序列来清除该终端的屏幕,则只需输出这些序列。 如果您告诉我们屏幕,我们可能会告诉您序列(它可能与ANSI / VT100 / VT220兼容)。

  2. 从外部确保您的应用程序始终在所需的终端中运行,例如,启动应用程序的脚本在所需的终端中启动应用程序。 然后输出必要的字符序列以清除屏幕。

  3. 通过使用终端仿真库来控制终端,即您的应用程序现在是一个窗口应用程序,它创建一个终端窗口屏幕供用户使用。 然后,您可以控制您正在模拟的终端,并知道需要哪些控制序列。

  4. 使用检测终端的终端库(例如历史性curses库)并为其function提供统一的接口。 看到这个问题:

    什么是一个很好的Java,类似于curses的终端应用程序库?

  5. 通过在屏幕上写一堆线来伪造它。

总有明显的(和kludgy)..

 int numRowsInConsole = 60; for (int ii=0; ii 
 System.out.println("Hello!"); 

打印指定的字符串,然后将光标移动到下一行。

 System.out.print("Hello!"); 

打印指定的字符串,并在该字符串后立即离开光标。

要解决上面确定的光标位于控制台第二行的问题,请使用print而不是println

我在BlueJ中做到了这一点并且工作得很好:尝试System.out.print(“\ f”);

清除正在为我工​​作的bash:

 System.out.print(String.format("\033[H\033[2J")); 

据我所知,尽管有传言,Windows 10的命令窗口cmd.exe本身并不支持ANSI ESC序列。 拥有:

 final String ANSI_CLS = "\u001b[2J"; System.out.print(ANSI_CLS); 

方法工作您需要一个支持ANSI的命令行模拟器,例如ConEmu64。

如果以上解决方案都不适合您(如我的情况),请尝试以下解决方案:

 new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); 

我正在使用Windows 8,这个解决方案对我有用。 希望它对你也有好处。 🙂

有两种非常简单的方法可以解决这个问题,第一种方法是powershell选择:

 for (int i=1; i<=10; i++) System.out.println("\n"); 

然而,问题在于它只是伪清除屏幕,你可以向上滚动查看数据,但不要害怕,还有另一种方法!

 System.out.println("\f"); 

瞧! 这应该可以解决问题,尽管在清除屏幕后光标将位于控制台的第二行。