在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.out
和System.err
不必是控制台,他们可以设置为什么(写入文件,例如)一个用例清除屏幕根本没有任何意义。
在Linux上,你可以做如下的事情:
System.out.println("\f");
你也可以使用Jcurses
要清除屏幕,只需键入:
System.out.print('\u000C');
Jansi是一个很好的解决方法。 我是一个业余编码器,Jansi很容易安装,特别是使用Eclipse。
以下是Jansi主页的链接:
以下是包含代码的网站的链接,作为Jansi包中包含的AnsiConsole类的演示:
您也可以尝试ANSI转义代码:
如果您的terminal支持他们,请尝试如下所示:
System.out.print("\033[2J\033[1;1H");
您可以包括\0333[1;1H
,以确保\0333[2J
是否将光标移动到左上angular。
进一步来说:
-
033
是ESC
的八进制 -
2J
用于清除整个控制台/terminal屏幕 -
1;1H
将光标移动到第1行和第1列
对于Windows, Java控制台API项目提供了确定控制台大小和设置光标位置的function。 清除屏幕是微不足道的。 这是一个0.2版本,所以它不完全是生产准备,但它的作品。
或者,您可以通过System.out.println()
打印出一些新的行。 640对每个人来说应该是足够的:-)它和清除屏幕不一样,但是对于用户的意图和目的来说,它会这样做。
你应该试试JNA并尝试映射本地库:
- 在Linux上,你必须映射ncurses库中的C函数
- 在Windows上,您必须映射来自msvcrt和kernel32的函数, 这里清楚地说明了这一点
PS
让我知道如果你需要一些示例代码
- 如何找出string是否已被URL编码?
- Java“?”运算符用于检查null – 它是什么? (不是三元!)
- 为什么Java的Arrays.sort方法对不同types使用两种不同的sortingalgorithm?
- 如何将数组写入文件Java
- NoClassDefFoundError和ClassNotFoundException之间的区别是什么?
- 如何获得List或Set的第一个元素?
- 简单的方法来查找两个不同的列表是否包含完全相同的元素?
- 在Java中获取当前工作目录
- ServletRequest.getParameterMap()返回Map <String,String >和ServletRequest.getParameter()返回String?