Java: effacer la console
tout organisme Peut s'il vous plaît dites-moi ce code est utilisé pour effacer l'écran en Java? Par exemple en C++
system("CLS");
quel code est utilisé en Java pour un écran clair?
Merci!
12 réponses
Puisqu'il y a plusieurs réponses ici montrant le code de non-fonctionnement Pour Windows, voici une clarification:
Runtime.getRuntime().exec("cls");
cette commande ne pas travail, pour deux raisons:
-
il n'y a pas d'exécutable nommé
cls.exe
oucls.com
dans une installation Windows standard qui pourrait être invoqué viaRuntime.exec
, comme la commande bien connuecls
est intégrée à la commande de Windows interprète de ligne. -
lors du lancement d'un nouveau processus via
Runtime.exec
, la sortie standard est redirigée vers un tube que le processus Java initiateur peut lire. Mais lorsque la sortie de la commandecls
est redirigée, elle ne libère pas la console.
pour résoudre ce problème, nous devons invoquer l'interpréteur en ligne de commande ( cmd
) et lui dire d'exécuter une commande ( /c cls
) qui permet d'invoquer builtin commands. De plus, nous devons connecter directement son canal de sortie au canal de sortie du processus Java, qui fonctionne à partir de Java 7, en utilisant 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();
}
}
maintenant que le processus Java est connecté à une console, c'est-à-dire qu'il a été démarré à partir d'une ligne de commande sans redirection de sortie, il va effacer la console.
vous pouvez utiliser le code suivant pour effacer la console de ligne de commande:
public static void clearScreen() {
System.out.print("3[H3[2J");
System.out.flush();
}
pour plus de références, visitez: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
C'est comme ça que je m'en occuperais. Cette méthode fonctionnera pour le cas Windows et le cas Linux / Unix OS (ce qui signifie qu'elle fonctionne aussi pour 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.
}
}
une façon d'obtenir ceci peut être d'imprimer plusieurs end of lines ("\n") et simuler l'écran transparent. À la fin clair au plus dans le shell unix, supprime pas le contenu précédent, ne déplace et si vous faites défiler vers le bas peut voir le contenu précédent.
voici un exemple de code:
for (int i = 0; i < 50; ++i) System.out.println();
si vous voulez une façon plus indépendante du système de faire ceci, vous pouvez utiliser la bibliothèque JLine et ConsoleReader.clearScreen () . Une vérification prudente de la prise en charge de JLine et ANSI dans l'environnement actuel en vaut probablement la peine.
quelque chose comme le code suivant a fonctionné pour moi:
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 + "'.");
}
}
}
lorsque vous lancez ceci, si vous tapez 'clear' à l'invite il pour effacer l'écran. Assurez-vous de l'exécuter à partir d'un terminal/d'une console appropriée et pas dans Eclipse.
créer une méthode dans votre classe comme ceci: [comme @Holger dit ici .]
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) {}
}
Cela fonctionne pour windows au moins, je n'ai pas vérifié pour Linux jusqu'à présent. Si quelqu'un vérifie pour Linux s'il vous plaît laissez-moi savoir si cela fonctionne (ou pas).
comme méthode alternative est d'écrire ce code dans 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
Je ne vous recommande pas d'utiliser cette méthode.
Runtime.getRuntime ().exec (cls) n'a pas travaillé sur mon portable XP. Cela a fait -
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
j'Espère que cela est utile
essayez ce qui suit :
System.out.print("33");
cela fonctionnera très bien dans L'environnement Linux
Vous pouvez utiliser une émulation de cls
avec
for (int i = 0; i < 50; ++i) System.out.println();
cela fonctionnera si vous le faites dans Bluej ou tout autre logiciel similaire.
System.out.print('\u000C');
vous devez utiliser JNI.
tout d'Abord créer un .dll utiliser visual studio, ce système d'appel("cls"). Après cela, utilisez JNI pour utiliser ce DDL.
j'ai trouvé cet article qui est agréable:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2