Yanıtlar:
Burada Windows için çalışmayan kodu gösteren birkaç cevap olduğundan, bir açıklama:
Runtime.getRuntime().exec("cls");
Bu komut yok değil iki nedenden dolayı, çalışır:
İyi bilinen komut Windows'un komut satırı yorumlayıcısında yerleşik olduğu için, çağrılabilecek standart bir Windows kurulumunda adlandırılmış cls.exe
veya yürütülebilir bir dosya yoktur .cls.com
Runtime.exec
cls
Aracılığıyla yeni bir işlem başlatırken Runtime.exec
, standart çıktı, başlatılan Java işleminin okuyabileceği bir boruya yönlendirilir. Ancak cls
komutun çıktısı yeniden yönlendirildiğinde, konsolu temizlemez.
Bu sorunu çözmek için, komut satırı yorumlayıcısını ( cmd
) /c cls
çağırmalı ve yerleşik komutları çağırmaya izin veren bir komut ( ) yürütmesini söylemeliyiz . Ayrıca, çıkış kanalını Java 7'den başlayarak çalışan Java işleminin çıkış kanalına doğrudan bağlamak zorundayız 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();
}
}
Şimdi Java işlemi bir konsola bağlandığında, yani çıkış yeniden yönlendirmesi olmayan bir komut satırından başlatıldığında, konsolu temizleyecektir.
Komut satırı konsolunu temizlemek için aşağıdaki kodu kullanabilirsiniz:
public static void clearScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
Daha fazla referans için şu adresi ziyaret edin: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
Ben bu şekilde halledeceğim. Bu yöntem Windows işletim sistemi durumu ve Linux / Unix OS durumu (Mac OS X için de çalışır) anlamına gelir.
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.
}
}
Bu yöntem genellikle unutmayın değil , bir IDE içinde çalıştırıyorsanız konsolu temizleyin.
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
Windows'da yürütülebilir dosya yok . Bu içsel bir komuttur cmd.exe
.
Bunu elde etmenin bir yolu, satırların birden çok ucunu ("\ n") yazdırmak ve net ekranı simüle etmek olabilir. Sonunda, en çok unix kabuğunda, önceki içeriği kaldırmaz, sadece yukarı taşır ve aşağı kaydırırsanız önceki içeriği görebilir.
İşte bir örnek kod:
for (int i = 0; i < 50; ++i) System.out.println();
\r\n
olduğu için tek bir 50'lik tek bir dize yazdırmaktır . println
println
clear
, ikincisinde, yeni çıktının ekranın üstünde değil altta olacağıdır.
System.out.println(new String(new char[50]).replace("\0", "\r\n"));
işi daha hızlı ve daha iyi yapacak.
System.out.println(System.lineSeparator().repeat(50));
Bunu yapmanın daha sistemden bağımsız bir yolunu istiyorsanız, JLine kitaplığını ve ConsoleReader.clearScreen () yöntemini kullanabilirsiniz . JLine ve ANSI'nin mevcut ortamda desteklenip desteklenmediğinin ihtiyatlı kontrolü muhtemelen de yapmaya değer.
Aşağıdaki kod gibi bir şey benim için çalıştı:
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 + "'.");
}
}
}
Bunu çalıştırdığınızda, bilgi istemine 'temizle' yazarsanız, ekran temizlenir. Eclipse'de değil, uygun bir terminalden / konsoldan çalıştırdığınızdan emin olun.
Bu gibi sınıfında bir yöntem oluşturun: [olarak @Holger söyledi buraya .]
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) {}
}
Bu en azından windows için çalışıyor, şimdiye kadar Linux için kontrol etmedim. Eğer birisi Linux için kontrol ederse, lütfen çalışıp çalışmadığını bana bildirin
Alternatif bir yöntem olarak, bu kodu yazmaktır 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
Bu yöntemi kullanmanızı tavsiye etmeyeceğim.
Runtime.getRuntime (). Exec (cls) XP dizüstü bilgisayarımda ÇALIŞMADI. Bu yaptı -
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
Umarım bu yararlıdır
Takip etmeyi dene :
System.out.print("\033\143");
Linux ortamında iyi çalışır
Bunu Bluej veya benzeri bir yazılımda yapıyorsanız bu işe yarar.
System.out.print('\u000C');
Kontrol karakterlerini ters eğik çizgi (\ b) ve satır başı (\ r) olarak kullanmanız gerekir. Varsayılan olarak devre dışıdır, ancak Konsol görünümü bu denetimleri yorumlayabilir.
Windows> Tercihler ve Çalıştır / Hata Ayıkla> Konsol'u seçin ve etkinleştirmek için ASCII kontrol karakterlerini yorumla'yı seçin
Bu yapılandırmalardan sonra, konsolunuzu aşağıdaki gibi kontrol karakterleriyle yönetebilirsiniz:
\ t - sekme.
\ b - geri tuşu (metinde geriye doğru bir adım veya tek bir karakterin silinmesi).
\ n - yeni satır.
\ r - satır başı. ()
\ f - form besleme.
Daha fazla bilgi için: https://www.eclipse.org/eclipse/news/4.14/platform.php
JNI kullanmanız gerekiyor.
Her şeyden önce visual studio, bu çağrı sistemi ("cls") kullanarak bir .dll oluşturmak kullanın. Bundan sonra bu DDL'yi kullanmak için JNI kullanın.
Güzel bu makaleyi buldum:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2