Bisakah seseorang memberi tahu saya kode apa yang digunakan untuk layar jernih di Java? Misalnya di C ++
system("CLS");
Kode apa yang digunakan di Java untuk layar yang jelas?
Terima kasih!
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
atau cls.com
dalam penginstalan Windows standar yang dapat dipanggil melalui Runtime.exec
, karena perintah terkenal dibangun di dalam cls
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 dari cls
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, menggunakan 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();
}
}
Sekarang ketika proses Java terhubung ke konsol, yaitu telah dimulai dari baris perintah tanpa pengalihan keluaran, itu akan menghapus konsol.
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
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.
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();
\r\n
dengan satu println
, karena ada penundaan yang nyata di antara println
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.
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.
Coba yang berikut ini:
System.out.print("\033\143");
Ini akan bekerja dengan baik di lingkungan Linux
Runtime.getRuntime (). Exec (cls) TIDAK berfungsi di laptop XP saya. Ini -
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
Semoga bermanfaat
Ini akan berfungsi jika Anda melakukan ini di Bluej atau perangkat lunak serupa lainnya.
System.out.print('\u000C');
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
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) {}
}
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) {}
}
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