web-dev-qa-db-ja.com

Java:コンソールをクリアする

Javaの画面をクリアするためにどのようなコードが使用されているのですか。例えばC++で

system("CLS");

明確な画面を表示するためにJavaで使用されているコード

ありがとうございます。

124
sadia

ここにいくつかの答えがあるが、ここではWindows用の機能しないコードを示しているので、ここに明確化がある。

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

このコマンドは、2つの理由でできません動作します。

  1. よく知られたコマンドclsはWindowsのコマンドラインインタプリタに組み込まれているため、cls.exeから呼び出すことができる標準のWindowsインストールには、cls.comまたはRuntime.execという名前の実行可能ファイルはありません。

  2. Runtime.execを介して新しいプロセスを起動すると、標準出力は開始Javaプロセスが読み取ることができるパイプにリダイレクトされます。しかし、clsコマンドの出力がリダイレクトされても、コンソールはクリアされません。

この問題を解決するには、コマンドラインインタプリタ(cmd)を呼び出して、組み込みコマンドの呼び出しを許可するコマンド(/c cls)を実行するように指示する必要があります。さらに、inheritIO()を使用して、その出力チャネルをJavaプロセスの出力チャネルに直接接続する必要があります。これは、Java 7以降で動作します。

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プロセスがコンソールに接続されているとき、すなわち出力のリダイレクトを伴わずにコマンドラインから開始されているときは、コンソールをクリアする。

97
Holger

次のコードを使用してコマンドラインコンソールを消去できます。

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

67
satish

これは私がそれを処理する方法です。このメソッドは、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.
    }
}
15
Dyndrilliac

もっとシステムに依存しない方法が欲しいなら、 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ではなく適切な端末/コンソールから実行してください。

12
prunge

これを取得する方法は、複数行の終わり( "\ n")を印刷して、クリアな画面をシミュレートすることです。最後に明らかに、せいぜいunixシェルでは、前の内容を削除せず、上に移動するだけで、下にスクロールすると前の内容を見ることができます。

これがサンプルコードです。

for (int i = 0; i < 50; ++i) System.out.println();
12
blackløtus

次のようにして、クラスにメソッドを作成します。[as @ Holger said here ]

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

この方法を使用することはお勧めしません。

11

以下を試してください。

System.out.print("\033\143");

これはLinux環境ではうまくいきます

7
Bhuvanesh Waran

Runtime.getRuntime()。exec(cls)が私のXPラップトップで機能しませんでした。これはしました -

for(int clear = 0; clear < 1000; clear++)
  {
     System.out.println("\b") ;
  }

これが役に立つことを願っています

5
user3648739

for (int i = 0; i < 50; ++i) System.out.println();clsのエミュレーションを使うことができます。

2
Epic

あなたがBluejや他の似たようなソフトウェアでこれをしているならこれはうまくいくでしょう。

System.out.print('\u000C');
2
Abhigyan Singh