Java:清除控制台

请问任何机构可以告诉我什么代码用于Java中的清屏? 例如在C ++中

system("CLS"); 

Java中用于清除屏幕的代码是什么?

谢谢!

由于这里有几个答案,显示Windows的非工作代码,这里是一个澄清:

 Runtime.getRuntime().exec("cls"); 

这个命令不起作用,有两个原因:

  1. 在可以通过Runtime.exec调用的标准Windows安装中没有名为cls.execls.com可执行文件,因为众所周知的命令cls内置于Windows的命令行解释器中。

  2. 当通过Runtime.exec启动一个新进程时,标准输出将被redirect到启动Java进程可以读取的pipe道。 但是,当cls命令的输出redirect时,它不会清除控制台。

为了解决这个问题,我们必须调用命令行解释器( cmd )并告诉它执行一个允许调用内置命令的命令( /c cls )。 此外,我们必须使用inheritIO()将其输出通道直接连接到从Java 7开始的Java进程的输出通道:

 import java.io.IOException; public class CLS { public static void main(String... arg) throws IOException, InterruptedException { new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); } } 

现在,当Java进程连接到控制台时,即从命令行启动而没有输出redirect时,它将清除控制台。

您可以使用以下代码清除命令行控制台:

 public static void clearScreen() { System.out.print("\033[H\033[2J"); System.out.flush(); } 

作为参考,请参阅此链接http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html

这是我如何处理它。 这种方法适用于Windows操作系统的情况和Linux / Unix操作系统的情况(这意味着它也适用于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. } } 

一种方法可以打印多行(“\ n”)和模拟清除屏幕。 最后清除,最多在unixshell中,不删除以前的内容,只是将其移动,如果你向下滚动可以看到以前的内容。

这是一个示例代码:

 for (int i = 0; i < 50; ++i) System.out.println(); 

如果你想要一个更独立于系统的方法,你可以使用JLine库和ConsoleReader.clearScreen() 。 谨慎检查当前环境中是否支持JLine和ANSI也是值得的。

像下面的代码为我工作:

 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 + "'."); } } } 

运行时,如果在提示符下键入“清除”,将清除屏幕。 确保从正确的terminal/控制台运行它,而不是在Eclipse中运行。

Runtime.getRuntime()。exec(cls)在我的XP笔记本电脑上不起作用。 这样做 –

 for(int clear = 0; clear < 1000; clear++) { System.out.println("\b") ; } 

希望这是有用的

像这样在你的课堂上创build一个方法:[如@Holger 在这里说的]

 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) {} } 

这至less适用于windows,至今我还没有检查过Linux。 如果有人检查它的Linux,请让我知道它是否工作(或不)。

作为替代方法是在clrscr()编写这段代码:

 for(int i = 0; i < 80*300; i++)//Default Height of cmd is 300 and Default width is 80 System.out.println("\b");//prints a backspace 

我不会推荐你使用这种方法。

你可以用for (int i = 0; i < 50; ++i) System.out.println();模拟cls for (int i = 0; i < 50; ++i) System.out.println();

尝试以下操作:

 System.out.print("\033\143"); 

这将在Linux环境中正常工作

如果你在Bluej或其他类似的软件中这样做,这将会起作用。

 System.out.print('\u000C'); 

你需要使用JNI。

首先使用visual studio创build一个.dll,即调用system(“cls”)。 之后使用JNI来使用这个DDL。

我发现这篇文章很好:

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2

 Runtime.getRuntime().exec("cls");