Câu trả lời:
Vì có một số câu trả lời ở đây hiển thị mã không hoạt động cho Windows, nên đây là một cách làm rõ:
Runtime.getRuntime().exec("cls");
Lệnh này không hoạt động, vì hai lý do:
Không có tên thực thi nào được đặt tên cls.exe
hoặc cls.com
trong bản cài đặt Windows tiêu chuẩn có thể được gọi thông qua Runtime.exec
, vì lệnh nổi tiếng được tích cls
hợp vào trình thông dịch dòng lệnh của Windows.
Khi khởi chạy một quy trình mới thông qua Runtime.exec
, đầu ra tiêu chuẩn được chuyển hướng đến một đường ống mà quy trình Java khởi tạo có thể đọc được. Nhưng khi đầu ra của cls
lệnh được chuyển hướng, nó sẽ không xóa giao diện điều khiển.
Để giải quyết vấn đề này, chúng ta phải gọi trình thông dịch dòng lệnh ( cmd
) và yêu cầu nó thực thi một lệnh ( /c cls
) cho phép gọi các lệnh dựng sẵn. Hơn nữa, chúng ta phải kết nối trực tiếp kênh đầu ra của nó với kênh đầu ra của quy trình Java, hoạt động bắt đầu với Java 7, bằng cách sử dụng 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();
}
}
Bây giờ khi quá trình Java được kết nối với một bàn điều khiển, tức là đã được bắt đầu từ một dòng lệnh mà không chuyển hướng đầu ra, nó sẽ xóa giao diện điều khiển.
Bạn có thể sử dụng đoạn mã sau để xóa bảng điều khiển dòng lệnh:
public static void clearScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
Để tham khảo thêm, hãy truy cập: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
Đây là cách tôi sẽ xử lý nó. Phương pháp này sẽ hoạt động cho trường hợp HĐH Windows và trường hợp HĐH Linux / Unix (có nghĩa là nó cũng hoạt động cho 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.
}
}
Lưu ý rằng phương pháp này thường sẽ không xóa bảng điều khiển nếu bạn đang chạy bên trong IDE.
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
thực thi trong Windows. Nó là một lệnh nội bộ của cmd.exe
.
Một cách để có được điều này có thể là in nhiều đầu dòng ("\ n") và mô phỏng màn hình rõ ràng. Cuối cùng, rõ ràng, nhiều nhất là trong vỏ unix, không xóa nội dung trước đó, chỉ di chuyển nó lên và nếu bạn thực hiện cuộn xuống có thể thấy nội dung trước đó.
Đây là một mã mẫu:
for (int i = 0; i < 50; ++i) System.out.println();
\r\n
với một lần duy nhất println
, vì có một độ trễ đáng chú ý giữa println
các cuộc gọi.
clear
là ở cái sau, đầu ra mới sẽ ở trên cùng của màn hình chứ không phải ở dưới cùng.
System.out.println(new String(new char[50]).replace("\0", "\r\n"));
sẽ làm công việc nhanh hơn và tốt hơn.
System.out.println(System.lineSeparator().repeat(50));
Nếu bạn muốn một cách độc lập hệ thống hơn để làm điều này, bạn có thể sử dụng thư viện JLine và ConsoleReader.clearScreen () . Kiểm tra thận trọng xem JLine và ANSI có được hỗ trợ trong môi trường hiện tại có lẽ cũng đáng để thực hiện.
Một cái gì đó giống như đoạn mã sau đã làm việc cho tôi:
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 + "'.");
}
}
}
Khi chạy này, nếu bạn gõ 'xóa' tại dấu nhắc, nó sẽ xóa màn hình. Hãy chắc chắn rằng bạn chạy nó từ một thiết bị đầu cuối / bàn điều khiển thích hợp chứ không phải trong Eclipse.
Tạo một phương thức trong lớp của bạn như thế này: [như @Holger đã nói ở đây .]
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) {}
}
Điều này hoạt động cho các cửa sổ ít nhất, cho đến nay tôi chưa kiểm tra Linux. Nếu bất cứ ai kiểm tra nó cho Linux xin vui lòng cho tôi biết nếu nó hoạt động (hoặc không).
Như một phương pháp thay thế là viết mã này vào 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
Tôi sẽ không khuyên bạn nên sử dụng phương pháp này.
Runtime.getR.78 (). Exec (cls) KHÔNG hoạt động trên máy tính xách tay XP của tôi. Điều này đã làm -
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
Hy vọng điều này hữu ích
Hãy thử như sau:
System.out.print("\033\143");
Điều này sẽ hoạt động tốt trong môi trường Linux
Điều này sẽ hoạt động nếu bạn đang làm điều này trong Bluej hoặc bất kỳ phần mềm tương tự nào khác.
System.out.print('\u000C');
Bạn cần sử dụng các ký tự điều khiển như dấu gạch chéo ngược (\ b) và trả về vận chuyển (\ r). Nó bị tắt theo mặc định, nhưng giao diện Console có thể diễn giải các điều khiển này.
Windows> Preferences và Run / Debug> Console và chọn Phiên dịch các ký tự điều khiển ASCII để kích hoạt nó
Sau các cấu hình này, bạn có thể quản lý bảng điều khiển của mình với các ký tự điều khiển như:
\ t - tab.
\ b - backspace (lùi một bước trong văn bản hoặc xóa một ký tự).
\ n - dòng mới.
\ r - vận chuyển trở lại. ()
\ f - dạng thức ăn.
Thêm thông tin tại: https://www.eclipse.org/eclipse/news/4.14/pl platform.php
Bạn cần sử dụng JNI.
Trước hết, hãy tạo một tệp bằng cách sử dụng phòng thu trực quan, hệ thống gọi đó ("cls"). Sau đó, sử dụng JNI để sử dụng DDL này.
Tôi tìm thấy bài viết này là tốt đẹp:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2