在java中清除屏幕选项

有没有任何选项来清除Java中的屏幕clrscr()在C.

肮脏的黑客去,我喜欢msparer的解决scheme。 我见过的更脏的方法(我绝不会这样做,我发誓,真的)就是在控制台上写一串换行符。 这根本不清除屏幕,但是给用户创造了一个清晰的屏幕的幻觉。

char c = '\n'; int length = 25; char[] chars = new char[length]; Arrays.fill(chars, c); System.out.print(String.valueOf(chars)); 

如果你正在谈论控制台,那么不。 写入控制台只是输出stream的特例。 输出stream不知道屏幕上的任何内容,因为它们可以轻松地redirect到文件或其他系统设备。

如果你正在谈论一个控制台应用程序,那么没有一个清晰的屏幕选项AFAIK。 一个相当脏的选项将是调用底层操作系统的清除屏幕命令。

那就像是

 Runtime.getRuntime().exec("cls"); 

对于Windows或

 Runtime.getRuntime().exec("clear"); 

对于其他操作系统的负载。 你可以通过System.getProperty("os.name")find操作系统。

对于任何支持ANSI转义的控制台,以下都是可行的(例如,在Win98控制台中工作)。

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

从Win NT开始,这将不再工作,你也可以

  • 做一个JNI调用(例如像这样: Java:清除控制台和控制属性
  • 或者写出一堆空行

否则,你是运气不好。

顺便说一句 你必须记住, System.outSystem.err不必是控制台,他们可以设置为什么(写入文件,例如)一个用例清除屏幕根本没有任何意义。

在Linux上,你可以做如下的事情:

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

你也可以使用Jcurses

要清除屏幕,只需键入:

 System.out.print('\u000C'); 

Jansi是一个很好的解决方法。 我是一个业余编码器,Jansi很容易安装,特别是使用Eclipse。

以下是Jansi主页的链接:

http://jansi.fusesource.org/

以下是包含代码的网站的链接,作为Jansi包中包含的AnsiConsole类的演示:

http://www.rgagnon.com/javadetails/java-0047.html

您也可以尝试ANSI转义代码:

如果您的terminal支持他们,请尝试如下所示:

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

您可以包括\0333[1;1H ,以确保\0333[2J是否将光标移动到左上angular。

进一步来说:

  • 033ESC的八进制
  • 2J用于清除整个控制台/terminal屏幕
  • 1;1H将光标移动到第1行和第1列

对于Windows, Java控制台API项目提供了确定控制台大小和设置光标位置的function。 清除屏幕是微不足道的。 这是一个0.2版本,所以它不完全是生产准备,但它的作品。

或者,您可以通过System.out.println()打印出一些新的行。 640对每个人来说应该是足够的:-)它和清除屏幕不一样,但是对于用户的意图和目的来说,它会这样做。

你应该试试JNA并尝试映射本地库:

  • 在Linux上,你必须映射ncurses库中的C函数
  • 在Windows上,您必须映射来自msvcrtkernel32的函数, 这里清楚地说明了这一点

PS

让我知道如果你需要一些示例代码