2012-04-20 129 views
26

因爲很長一段時間我一直在拉我的頭髮。我已經研究了一個小時如何清除Java中的控制檯。如何在Java中清除控制檯?

我所發現的是骯髒或者通過打印一堆線或執行本

Runtime.getruntime.exec("cls/clear"); 

然而,似乎沒有任何爲我工作黑客。真的沒有像C中那樣清除Java中的控制檯的方法(clrscr();)。沒有任何外部圖書館可以實現這一目標。

請讓我知道如果有人曾經使用過適當的功能,庫等,而不是骯髒的黑客之前做過這個。

+1

'like C'?我認爲在C中唯一的方法是使用像ncurses這樣的庫。如果這就是你所追求的,這個問題描述瞭如何獲得與Java類似/相同的結果:http://stackoverflow.com/questions/439799/whats-a-good-java-curses-like-library-for-terminal -applications。 – Hassan 2012-04-20 06:24:43

+0

如果你有一個VT100終端,也許你可以使用Escape Codes(Esc [2J \t清除整個屏幕\t ED2)見http://ascii-table.com/ansi-escape-sequences-vt-100.php對於其他終端可能是其他逃逸代碼。 eclipse控制檯不包含任何轉義代碼。 – Andreas 2012-04-20 06:30:28

+3

類似的問題:** [Java:清除控制檯](http://stackoverflow.com/questions/2979383/java-clear-the-console)** – 2012-04-20 06:31:05

回答

3
Runtime.getRuntime().exec("PlatformDepedentCode"); 

您需要用平臺的clear console命令替換「PlatformDependentCode」。

exec()方法執行您作爲參數輸入的命令,就像它在控制檯中輸入一樣。

在Windows中,您將其編寫爲Runtime.getRuntime().exec("cls");

+10

'Runtime.getRuntime().exec(「cls」) ;'在窗口上無效(所有時間)。 – Lion 2012-04-20 06:32:23

0

您需要指示控制檯清除。

對於串行終端,這通常是通過所謂的「轉義序列」完成的,其中值得注意的是vt100集已變得非常普遍地支持(以及它的近親ANSI表兄弟)。

Windows傳統上不支持這種「開箱即用」的序列,但依靠API調用來完成這些操作。但是,對於基於DOS的Windows版本,可以安裝ANSI.SYS驅動程序來提供此類支持。

所以如果你在Windows下,你需要與相應的Windows API進行交互。我不相信標準的Java運行時庫包含這樣做的代碼。

16

如果你的終端支持ANSI escape codes,這將清除屏幕,將光標移動到第一行,第一列:

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

這適用於幾乎所有的UNIX終端和終端仿真器。 Windows cmd.exe不解釋ANSI轉義碼。

+0

在ubuntu的eclipse控制檯上不起作用 – sziraqui 2017-09-20 10:11:08

+0

這是因爲Eclipse控制檯不支持ANSI轉義代碼。 – IMustBeSomeone 2017-11-25 19:48:28

1

您可以使用簡單的循環打印「\ b」輕鬆實現clrscr()。

5

試試這個代碼

import java.io.IOException; 

public class CLS { 
    public static void main(String... arg) throws IOException, InterruptedException { 
     new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); 
    } 
} 

現在,當Java程序連接到控制檯,它會清除控制檯。

-1

如果您正在使用Windows並且有意在運行程序之前清除屏幕,則可以編譯該文件,從.bat文件中調用它。 例如:


CLS

的Java「什麼都編譯類的名稱是」


另存爲「等」蝙蝠,然後通過調用它在運行命令提示符或雙擊文件

+1

如果你的方法被使用,那麼它在啓動程序之前會清除所有的東西,但問題是關於在運行java程序時在運行時清除屏幕。 – 2017-04-07 17:00:25

1

使用以下代碼:


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

'\˚F' 是轉義序列表示換頁。這是我在我的項目中用來清除控制檯的內容。我猜,這比其他代碼更簡單。