回答:
Windowsで機能しないコードを示すいくつかの回答があるため、ここに説明があります。
Runtime.getRuntime().exec("cls");
このコマンドは、次の2つの理由で機能しません。
何という名前の実行はありませんcls.exe
かcls.com
経由で呼び出すことができ、標準のWindowsインストールではRuntime.exec
よく知られているコマンドのように、cls
Windowsのコマンドラインインタプリタへの組み込みですが。
を介して新しいプロセスを起動するRuntime.exec
と、標準出力は、開始Javaプロセスが読み取ることができるパイプにリダイレクトされます。ただし、cls
コマンドの出力がリダイレクトされても、コンソールはクリアされません。
この問題を解決するには、コマンドラインインタープリター(cmd
)を/c cls
呼び出して、組み込みコマンドを呼び出すことができるコマンド()を実行するように指示する必要があります。さらに、次のコマンドを使用して、その出力チャネルをJavaプロセスの出力チャネルに直接接続する必要があります。これは、Java 7以降で機能しinheritIO()
ます。
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プロセスがコンソールに接続されたとき、つまり出力リダイレクトなしでコマンドラインから開始されたときに、コンソールがクリアされます。
次のコードを使用して、コマンドラインコンソールをクリアできます。
public static void clearScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
詳細については、http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.htmlをご覧ください。
これは私がそれを処理する方法です。この方法は、Windows OSおよびLinux / Unix OSの場合に機能します(つまり、Mac OS Xでも機能します)。
public final static void clearConsole()
{
try
{
final String os = System.getProperty("os.name");
if (os.contains("Windows"))
{
Runtime.getRuntime().exec("cls");
}
else
{
Runtime.getRuntime().exec("clear");
}
}
catch (final Exception e)
{
// Handle any exceptions.
}
}
IDE内で実行している場合、このメソッドは通常、コンソールをクリアしないことに注意してください。
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
Windowsには実行可能ファイルはありません。の内部コマンドですcmd.exe
。
これを取得する方法は、複数の行末( "\ n")を印刷して、クリアな画面をシミュレートすることです。最後のクリアでは、多くの場合、UNIXシェルでは、前のコンテンツを削除せず、上に移動するだけです。下にスクロールすると、前のコンテンツが表示されます。
これがサンプルコードです:
for (int i = 0; i < 50; ++i) System.out.println();
\r\n
、これを実現するより速い方法は、50の単一の文字列を単一println
ので出力することprintln
です。
clear
は、後者の場合、新しい出力は画面の上部ではなく上部に表示されることです。
System.out.println(new String(new char[50]).replace("\0", "\r\n"));
より速く、より良い仕事をします。
System.out.println(System.lineSeparator().repeat(50));
これを行うためのシステムに依存しない方法が必要な場合は、JLineライブラリとConsoleReader.clearScreen()を使用できます。JLineおよびANSIがサポートされているかどうかの慎重なチェック現在の環境でれていることも、おそらく実行する価値があります。
次のコードのようなものが私にとってうまくいきました:
import jline.console.ConsoleReader;
public class JLineTest
{
public static void main(String... args)
throws Exception
{
ConsoleReader r = new ConsoleReader();
while (true)
{
r.println("Good morning");
r.flush();
String input = r.readLine("prompt>");
if ("clear".equals(input))
r.clearScreen();
else if ("exit".equals(input))
return;
else
System.out.println("You typed '" + input + "'.");
}
}
}
これを実行するときに、プロンプトで「clear」と入力すると、画面がクリアされます。Eclipseではなく、適切なターミナル/コンソールから実行してください。
次のようにクラスにメソッドを作成します。[ @ Holgerがここで言ったように。]
public static void clrscr(){
//Clears Screen in java
try {
if (System.getProperty("os.name").contains("Windows"))
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
else
Runtime.getRuntime().exec("clear");
} catch (IOException | InterruptedException ex) {}
}
これは少なくともWindowsで機能します。これまでのところ、Linuxについては確認していません。誰かがLinuxをチェックしている場合は、動作するかどうかをお知らせください。
別の方法として、このコードをclrscr()
次のように記述します。
for(int i = 0; i < 80*300; i++) // Default Height of cmd is 300 and Default width is 80
System.out.print("\b"); // Prints a backspace
この方法の使用はお勧めしません。
Runtime.getRuntime()。exec(cls)がXPラップトップで機能しませんでした。これは-
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
これが役に立てば幸い
制御文字をバックスラッシュ(\ b)および復帰(\ r)として使用する必要があります。デフォルトでは無効になっていますが、コンソールビューでこれらのコントロールを解釈できます。
[ウィンドウ]> [設定]と[ 実行/デバッグ]> [コンソール]をクリックし、[ ASCII制御文字の解釈]を選択して有効にします。
これらの構成後、次のような制御文字を使用してコンソールを管理できます。
\ t-タブ。
\ b-バックスペース(テキストの1つ前のステップまたは単一の文字の削除)。
\ n-新しい行。
\ r-キャリッジリターン。()
\ f-フォームフィード。
JNIを使用する必要があります。
まず、Visual Studioを使用して.dllを作成し、system( "cls")を呼び出します。その後、JNIを使用してこのDDLを使用します。
私は素晴らしいこの記事を見つけました:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2