IT

자바 : 콘솔 지우기

lottoking 2020. 7. 9. 07:55
반응형

자바 : 콘솔 지우기


Java의 명확한 화면에 어떤 코드가 사용 알려주십시오. 예를 들어 C ++에서

system("CLS");

명확한 화면을 위해 Java에서 어떤 코드가 사용됩니까?

감사합니다!


Windows 용으로 작동하지 않는 코드를 설명 몇 가지 답변이 있습니다.

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

은이 명령 다음 두 가지 이유로 작동 하지 않습니다 .

  1. 명령 잘 알려진 이 윈도우 명령 줄 인터프리터의에 내장되어 있으므로을 통해 호출 할 수있는 명명 된 cls.exe또는 cls.com표준 윈도우 설치 에는 실행 파일이 없습니다 .Runtime.execcls

  2. 를 통해 새 프로세스를 시작 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.
    }
}


여러 줄의 관리자 끝 ( "\ n")을 인쇄하고 선명한 화면을 시뮬레이션하는 것입니다. 마지막으로 유닉스 쉘에서 대부분 이전 내용을 제거하지 않고 이동하고 아래로 스크롤하면 이전 내용을 볼 수 있습니다.

다음은 샘플 코드입니다.

for (int i = 0; i < 50; ++i) System.out.println();

시스템 독립 인 방법 으로이 작업을 수행 할 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

이 방법을 사용하지 않는 것이 좋습니다.


다음을 시도하십시오.

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

이것은 Linux 환경에서 잘 작동합니다.


Runtime.getRuntime (). exec (cls)가 내 XP 노트북에서 작동하지 않습니다. 이-

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

이것이 유용하기를 바랍니다.


cls와 함께 에뮬레이션을 사용할 수 있습니다.for (int i = 0; i < 50; ++i) System.out.println();


Bluej 또는 기타 소프트웨어에서이 작업을 수행하는 경우 작동합니다.

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

JNI를 사용합니다.

먼저 Visual Studio를 사용하여 시스템 ( "cls")을 호출하는 .dll을 만듭니다. 그 후 JNI를 사용하여 DDL을 사용하십시오.

나는 좋은 기사를 찾았습니다.

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2

참고 URL : https://stackoverflow.com/questions/2979383/java-clear-the-console

반응형