Karena ada beberapa jawaban di sini yang menunjukkan kode tidak berfungsi untuk Windows, berikut ini klarifikasinya:
Runtime.getRuntime().exec("cls");
Perintah ini tidak berfungsi, karena dua alasan:
Tidak ada nama yang dapat dieksekusi cls.exeatau cls.comdalam penginstalan Windows standar yang dapat dipanggil melalui Runtime.exec, karena perintah terkenal dibangun di dalam clspenerjemah baris perintah Windows.
Saat meluncurkan proses baru lewat Runtime.exec, output standar dialihkan ke pipa yang dapat dibaca oleh proses Java yang memulai. Tetapi ketika output dari clsperintah dialihkan, konsol tidak dihapus.
Untuk mengatasi masalah ini, kita harus memanggil command line interpreter ( cmd) dan memerintahkannya untuk mengeksekusi perintah ( /c cls) yang memungkinkan memanggil perintah bawaan. Selanjutnya kita harus langsung menghubungkan saluran keluarannya ke saluran keluaran proses Java, yang bekerja dimulai dengan Java 7, menggunakan inheritIO():
@jdurston mengabaikan beranda tidak akan menyetel ulang kursor ke bagian atas jendela.
Hugo Zink
1
Tidak bekerja di Eclipse, tapi bekerja di terminal Linux. Satu suara untuk Anda
Anh Tuan
9
Ini hanya berfungsi jika emulator terminal tempat Java dijalankan, mendukung kode escape ANSI. Windows NT / XP / 7/8/10 CMD tidak
Thorbjørn Ravn Andersen
21
Beginilah cara saya menanganinya. Metode ini akan bekerja untuk kasus OS Windows dan kasus Linux / Unix OS (yang berarti juga berfungsi untuk Mac OS X).
publicfinalstaticvoidclearConsole(){
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.
}
}
Perhatikan bahwa metode ini umumnya tidak akan menghapus konsol jika Anda menjalankannya di dalam IDE.
Di Windows 8.1:java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
Ben Leggiero
1
@BenLeggiero Kesalahan itu terjadi jika karena alasan tertentu perintah cls tidak ditemukan oleh JVM dalam beberapa direktori dari variabel lingkungan PATH. Semua kode ini lakukan adalah memanggil perintah sistem Windows atau Unix berdasarkan konfigurasi sistem default untuk menghapus masing-masing jendela prompt perintah atau jendela terminal. Ini harus sama persis dengan membuka jendela terminal dan mengetik "cls" diikuti dengan tombol Enter.
Dyndrilliac
23
Tidak ada yang clsdapat dieksekusi di Windows. Ini adalah perintah internalcmd.exe .
a_horse_with_no_name
7
Seperti yang dikatakan oleh orang lain, tidak berfungsi sama sekali , tidak hanya karena Windows tidak memiliki cls yang dapat dieksekusi, tetapi juga karena output subproses dialihkan.
Sebuah cara untuk mendapatkan ini dapat dengan mencetak beberapa ujung baris ("\ n") dan mensimulasikan layar yang jelas. Pada akhirnya jelas, paling banyak di shell unix, tidak menghapus konten sebelumnya, hanya memindahkannya ke atas dan jika Anda membuat gulir ke bawah dapat melihat konten sebelumnya.
Berikut ini contoh kode:
for (int i = 0; i < 50; ++i) System.out.println();
Cara yang lebih cepat untuk melakukannya adalah dengan mencetak satu string 50 \r\ndengan satu println, karena ada penundaan yang nyata di antara printlnpanggilan.
Ben Leggiero
8
Bagaimana Anda tahu berapa banyak baris yang dikonfigurasi konsol untuk ditampilkan? Mungkin berhasil dalam banyak kasus, tetapi tidak semua.
Cypher
4
Perbedaan terbesar antara this dan proper clearadalah di yang terakhir, keluaran baru akan berada di bagian atas layar dan bukan di bagian bawah.
ndm13
5
System.out.println(new String(new char[50]).replace("\0", "\r\n"));akan melakukan pekerjaan lebih cepat dan lebih baik.
Aaron Esau
1
@AaronEsau dimulai dengan JDK 11, Anda dapat menggunakanSystem.out.println(System.lineSeparator().repeat(50));
Holger
15
Jika Anda menginginkan cara yang lebih independen dari sistem untuk melakukan ini, Anda dapat menggunakan perpustakaan JLine dan ConsoleReader.clearScreen () . Pemeriksaan hati-hati apakah JLine dan ANSI didukung di lingkungan saat ini mungkin perlu dilakukan juga.
Sesuatu seperti kode berikut berfungsi untuk saya:
import jline.console.ConsoleReader;
publicclassJLineTest{
publicstaticvoidmain(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();
elseif ("exit".equals(input))
return;
else
System.out.println("You typed '" + input + "'.");
}
}
}
Saat menjalankan ini, jika Anda mengetik 'clear' saat diminta, layar akan dihapus. Pastikan Anda menjalankannya dari terminal / konsol yang tepat dan bukan di Eclipse.
Buat metode di kelas Anda seperti ini: [seperti yang dikatakan @Holger di sini .]
publicstaticvoidclrscr(){
//Clears Screen in javatry {
if (System.getProperty("os.name").contains("Windows"))
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
else
Runtime.getRuntime().exec("clear");
} catch (IOException | InterruptedException ex) {}
}
Ini berfungsi untuk windows setidaknya, saya belum memeriksa Linux sejauh ini. Jika ada yang memeriksanya untuk Linux, beri tahu saya jika berfungsi (atau tidak).
Sebagai metode alternatif adalah dengan menulis kode ini di 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
Saya tidak akan merekomendasikan Anda untuk menggunakan metode ini.
Ini hanya petunjuk, mungkin seseorang ingin membersihkan layar, Sebenarnya
Sarz
@Sarz: dan sebenarnya "membersihkan layar" tidak masuk akal dengan sendirinya, baik
Gyom
1
Anda perlu menggunakan karakter kontrol sebagai garis miring terbalik (\ b) dan carriage return (\ r). Ini dinonaktifkan secara default, tetapi tampilan Konsol dapat menafsirkan kontrol ini.
Windows> Preferensi dan Run / Debug> Konsol dan pilih Interpretasikan karakter kontrol ASCII untuk mengaktifkannya
Setelah konfigurasi ini, Anda dapat mengelola konsol Anda dengan karakter kontrol seperti:
\ t - tab.
\ b - spasi mundur (langkah mundur dalam teks atau penghapusan satu karakter).
Jawaban:
Karena ada beberapa jawaban di sini yang menunjukkan kode tidak berfungsi untuk Windows, berikut ini klarifikasinya:
Runtime.getRuntime().exec("cls");
Perintah ini tidak berfungsi, karena dua alasan:
Tidak ada nama yang dapat dieksekusi
cls.exe
ataucls.com
dalam penginstalan Windows standar yang dapat dipanggil melaluiRuntime.exec
, karena perintah terkenal dibangun di dalamcls
penerjemah baris perintah Windows.Saat meluncurkan proses baru lewat
Runtime.exec
, output standar dialihkan ke pipa yang dapat dibaca oleh proses Java yang memulai. Tetapi ketika output daricls
perintah dialihkan, konsol tidak dihapus.Untuk mengatasi masalah ini, kita harus memanggil command line interpreter (
cmd
) dan memerintahkannya untuk mengeksekusi perintah (/c cls
) yang memungkinkan memanggil perintah bawaan. Selanjutnya kita harus langsung menghubungkan saluran keluarannya ke saluran keluaran proses Java, yang bekerja dimulai dengan Java 7, menggunakaninheritIO()
:import java.io.IOException; public class CLS { public static void main(String... arg) throws IOException, InterruptedException { new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); } }
Sekarang ketika proses Java terhubung ke konsol, yaitu telah dimulai dari baris perintah tanpa pengalihan keluaran, itu akan menghapus konsol.
sumber
Anda dapat menggunakan kode berikut untuk menghapus konsol baris perintah:
public static void clearScreen() { System.out.print("\033[H\033[2J"); System.out.flush(); }
Untuk referensi lebih lanjut kunjungi: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
sumber
Beginilah cara saya menanganinya. Metode ini akan bekerja untuk kasus OS Windows dan kasus Linux / Unix OS (yang berarti juga berfungsi untuk 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. } }
Perhatikan bahwa metode ini umumnya tidak akan menghapus konsol jika Anda menjalankannya di dalam IDE.
sumber
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
dapat dieksekusi di Windows. Ini adalah perintah internalcmd.exe
.Sebuah cara untuk mendapatkan ini dapat dengan mencetak beberapa ujung baris ("\ n") dan mensimulasikan layar yang jelas. Pada akhirnya jelas, paling banyak di shell unix, tidak menghapus konten sebelumnya, hanya memindahkannya ke atas dan jika Anda membuat gulir ke bawah dapat melihat konten sebelumnya.
Berikut ini contoh kode:
for (int i = 0; i < 50; ++i) System.out.println();
sumber
\r\n
dengan satuprintln
, karena ada penundaan yang nyata di antaraprintln
panggilan.clear
adalah di yang terakhir, keluaran baru akan berada di bagian atas layar dan bukan di bagian bawah.System.out.println(new String(new char[50]).replace("\0", "\r\n"));
akan melakukan pekerjaan lebih cepat dan lebih baik.System.out.println(System.lineSeparator().repeat(50));
Jika Anda menginginkan cara yang lebih independen dari sistem untuk melakukan ini, Anda dapat menggunakan perpustakaan JLine dan ConsoleReader.clearScreen () . Pemeriksaan hati-hati apakah JLine dan ANSI didukung di lingkungan saat ini mungkin perlu dilakukan juga.
Sesuatu seperti kode berikut berfungsi untuk saya:
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 + "'."); } } }
Saat menjalankan ini, jika Anda mengetik 'clear' saat diminta, layar akan dihapus. Pastikan Anda menjalankannya dari terminal / konsol yang tepat dan bukan di Eclipse.
sumber
Buat metode di kelas Anda seperti ini: [seperti yang dikatakan @Holger di sini .]
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) {} }
Ini berfungsi untuk windows setidaknya, saya belum memeriksa Linux sejauh ini. Jika ada yang memeriksanya untuk Linux, beri tahu saya jika berfungsi (atau tidak).
Sebagai metode alternatif adalah dengan menulis kode ini di
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
Saya tidak akan merekomendasikan Anda untuk menggunakan metode ini.
sumber
Coba yang berikut ini:
System.out.print("\033\143");
Ini akan bekerja dengan baik di lingkungan Linux
sumber
Runtime.getRuntime (). Exec (cls) TIDAK berfungsi di laptop XP saya. Ini -
for(int clear = 0; clear < 1000; clear++) { System.out.println("\b") ; }
Semoga bermanfaat
sumber
Ini akan berfungsi jika Anda melakukan ini di Bluej atau perangkat lunak serupa lainnya.
System.out.print('\u000C');
sumber
Anda dapat menggunakan emulasi
cls
denganfor (int i = 0; i < 50; ++i) System.out.println();
sumber
Anda perlu menggunakan karakter kontrol sebagai garis miring terbalik (\ b) dan carriage return (\ r). Ini dinonaktifkan secara default, tetapi tampilan Konsol dapat menafsirkan kontrol ini.
Windows> Preferensi dan Run / Debug> Konsol dan pilih Interpretasikan karakter kontrol ASCII untuk mengaktifkannya
Setelah konfigurasi ini, Anda dapat mengelola konsol Anda dengan karakter kontrol seperti:
\ t - tab.
\ b - spasi mundur (langkah mundur dalam teks atau penghapusan satu karakter).
\ n - baris baru.
\ r - kereta kembali. ()
\ f - umpan formulir.
Informasi lebih lanjut di: https://www.eclipse.org/eclipse/news/4.14/platform.php
sumber
Coba ini: hanya berfungsi di konsol, bukan di konsol terintegrasi NetBeans.
public static void cls(){ 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) {}
}
sumber
Dengan menggabungkan semua jawaban yang diberikan, metode ini harus bekerja di semua lingkungan:
public static void clearConsole() { try { if (System.getProperty("os.name").contains("Windows")) { new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); } else { System.out.print("\033\143"); } } catch (IOException | InterruptedException ex) {} }
sumber
Anda perlu menggunakan JNI.
Pertama-tama gunakan buat .dll menggunakan visual studio, yaitu sistem panggilan ("cls"). Setelah itu gunakan JNI untuk menggunakan DDL ini.
Saya menemukan artikel ini bagus:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2
sumber