Java:清除控制台
请问任何机构可以告诉我什么代码用于Java中的清屏? 例如在C ++中
system("CLS");
Java中用于清除屏幕的代码是什么?
谢谢!
由于这里有几个答案,显示Windows的非工作代码,这里是一个澄清:
Runtime.getRuntime().exec("cls");
这个命令不起作用,有两个原因:
-
在可以通过
Runtime.exec
调用的标准Windows安装中没有名为cls.exe
或cls.com
可执行文件,因为众所周知的命令cls
内置于Windows的命令行解释器中。 -
当通过
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");