2009-11-05 54 views
10

是否有任何選項可以在java中將屏幕清除爲C中的clrscr()。java中的清屏選項

+4

清除*什麼*屏幕?你在談論一個控制檯應用程序? –

+0

是關於控制檯應用程序 – user161004

回答

10

骯髒的黑客去,我喜歡msparer的解決方案。我見過的更髒的方法(我絕不會這樣做,我發誓,真的)是爲控制檯寫一堆換行符。這並不能完全清除屏幕,但會給用戶帶來清晰屏幕的幻覺。

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

我不敢寫下這個答案。尼斯:-) – LB40

+0

@LB:我承認這可能是最糟糕的做法。有時你只需要分享你的WTF。 :) –

+3

這與 'System.out不同。打印(「\ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n「);' 這是一行而不是五行嗎? – Tenner

7

如果您正在討論控制檯,寫入控制檯只是輸出流的特例。輸出流不知道屏幕上的任何內容,因爲它們可以輕鬆地重定向到文件或其他系統設備。

7

如果您正在討論控制檯應用程序,那麼沒有清晰的屏幕選項AFAIK。 A 相當髒選項將調用底層操作系統的清屏命令。

然後,它像

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

for Windows或

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

其他OS的負載。您可以通過System.getProperty("os.name")找到操作系統。

+0

'dirty'非常'髒':D –

+2

它不起作用。我嘗試在Windows XP中。 – user161004

+5

我覺得'cls'是一個內置函數,而不是一個實際的可執行文件。 –

0

對於Windows,Java Console API項目提供確定控制檯大小和設置光標位置的功能。清除屏幕是微不足道的。現在是0.2版本,所以它不完全是生產準備,但它的工作原理。

或者,您可以簡單地通過System.out.println()打印一些新行。 640對每個人都應該足夠了:-)它和清除屏幕不一樣,但是對於用戶的意圖和目的來說,它會這樣做。

5

在Linux上,你可以這樣做:

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

您還可以使用Jcurses

5

對於任何支持ANSI轉義的控制檯,下面的工作(例如在Win98控制檯中工作)。

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

與Win NT開始,這將不再工作,你可以

否則你是運氣不好

而順便說一句,你必須記住, System.outSystem.err不一定是控制檯,它們可以設置成什麼(寫入一個文件,例如)用於清除屏幕根本沒有任何意義的用例。

+0

+1非常棒的正確答案。 –

0

你應該給與JNA一個嘗試,嘗試映射本地庫:

  • 在Linux上,你必須從ncurses的
  • 在Windows上映射的C函數,你必須從兩個MSVCRT映射功能和KERNEL32,如明確規定here

PS

讓,如果你需要一些示例代碼

3

清除屏幕只需鍵入:

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

在Windows上沒有幫我工作 – paullb

2

您也可以嘗試ANSI轉義代碼:

如果你的終端支持他們,嘗試這樣的事情:

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

可以包括\0333[1;1H可以肯定,如果\0333[2J不移動光標在上左角。

更具體地:

  • 033ESC
  • 2J八進制用於清除整個控制檯/終端屏幕
  • 1;1H將光標移動到第1行和第1列
+0

這是唯一的ANSI解決方案,它始終在我的Linux終端中工作。特別是光標重新定位在最後使它看起來不錯並且乾淨。此外,它尊重窗戶的大小(高度)。 –