답변:
Windows에서 작동하지 않는 코드를 보여주는 몇 가지 답변이 있으므로 여기에 설명이 있습니다.
Runtime.getRuntime().exec("cls");
이 명령은 다음 두 가지 이유로 작동 하지 않습니다 .
잘 알려진 명령 은 Windows의 명령 줄 인터프리터에 내장되어 있으므로을 통해 호출 할 수있는 명명 된 cls.exe
또는 cls.com
표준 Windows 설치 에는 실행 파일이 없습니다 .Runtime.exec
cls
를 통해 새 프로세스를 시작 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")을 인쇄하고 선명한 화면을 시뮬레이션하는 것입니다. 마지막으로 유닉스 쉘에서 대부분 이전 내용을 제거하지 않고 위로 이동하고 아래로 스크롤하면 이전 내용을 볼 수 있습니다.
다음은 샘플 코드입니다.
for (int i = 0; i < 50; ++i) System.out.println();
\r\n
을 인쇄하는 것 입니다. 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
이 방법을 사용하지 않는 것이 좋습니다.
XP. 노트북에서 Runtime.getRuntime (). exec (cls)가 작동하지 않았습니다. 이것은-
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
이것이 유용하기를 바랍니다
제어 문자를 백 슬래시 (\ b) 및 캐리지 리턴 (\ r)으로 사용해야합니다. 기본적으로 비활성화되어 있지만 콘솔보기에서 이러한 컨트롤을 해석 할 수 있습니다.
Windows> 환경 설정 및 실행 / 디버그> 콘솔 에서 ASCII 제어 문자 해석을 선택 하여 사용으로 설정하십시오.
이러한 구성 후에는 다음과 같은 제어 문자로 콘솔을 관리 할 수 있습니다.
\ t-탭.
\ b-백 스페이스 (텍스트에서 한 단계 뒤로 이동하거나 단일 문자 삭제).
\ n-줄 바꿈.
\ r-캐리지 리턴 ()
\ f-양식 피드.
자세한 정보 : https://www.eclipse.org/eclipse/news/4.14/platform.php
JNI를 사용해야합니다.
우선 Visual Studio를 사용하여 호출 시스템 ( "cls")을 사용하여 .dll을 만듭니다. 그런 다음 JNI를 사용하여이 DDL을 사용하십시오.
이 기사가 훌륭하다는 것을 알았습니다.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2