Java:清除控制台

Java:清除控制台,java,console,Java,Console,任何人都能告诉我Java中用于清晰屏幕的代码是什么吗?例如C++中的/P> system("CLS"); Java中使用什么代码来实现清晰屏幕 谢谢 获得此信息的一种方法是打印多行结尾\n并模拟清晰屏幕。最后,在unixshell中,最多是清除,不删除以前的内容,只向上移动它,如果您使scroll down可以看到以前的内容 下面是一个示例代码: for (int i = 0; i < 50; ++i) System.out.println(); 如果您想要一种更独立于系统的方法来实现

任何人都能告诉我Java中用于清晰屏幕的代码是什么吗?例如C++中的/P>
system("CLS");
Java中使用什么代码来实现清晰屏幕


谢谢

获得此信息的一种方法是打印多行结尾\n并模拟清晰屏幕。最后,在unixshell中,最多是清除,不删除以前的内容,只向上移动它,如果您使scroll down可以看到以前的内容

下面是一个示例代码:

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

如果您想要一种更独立于系统的方法来实现这一点,您可以使用库和。谨慎地检查在当前环境下是否值得这样做

类似于以下代码的代码对我有效:

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

        }
    }
}

运行此操作时,如果在提示符处键入“clear”,将清除屏幕。请确保从正确的终端/控制台而不是在Eclipse中运行它。

我将这样处理它。此方法适用于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.
    }
}

请注意,如果您在IDE中运行,此方法通常不会清除控制台。

Runtime.getRuntime.execcls在我的XP笔记本电脑上不起作用。确实如此-

for(int clear = 0; clear < 1000; clear++)
  {
     System.out.println("\b") ;
  }
希望这是有用的

您需要使用JNI

首先,使用VisualStudio创建一个.dll,调用systemcls。 然后使用JNI来使用这个DDL

我发现这篇文章很好:


您可以将cls的模拟与
对于int i=0;i<50++i System.out.println

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

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

有关更多参考信息,请访问:

,因为这里有几个答案显示了Windows的非工作代码,下面是一个说明:

Runtime.getRuntime().exec("cls");
此命令不起作用,原因有二:

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

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

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


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

如果您在Bluej或任何其他类似软件中执行此操作,则此操作将有效

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

在类中创建如下方法:[如上所述。]

这至少适用于windows,到目前为止我还没有检查Linux。如果有人检查它的Linux,请让我知道它是否有效

另一种方法是在CLRSC中编写此代码:

我不建议您使用此方法。

请尝试以下方法:

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

这将在Linux环境中正常工作

您需要使用控制字符作为反斜杠\b和回车符\r。它在默认情况下是禁用的,但是Console视图可以解释这些控件

Windows>首选项并运行/调试>控制台,然后选择解释ASCII控制字符以启用它

完成这些配置后,您可以使用以下控制字符管理控制台:

\t形标签

\b-退格文本中的退格或删除单个字符

\n-新线

\r-回车

\f型饲料


更多信息请访问:

试试这个:只在控制台上工作,不在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) {}
}

通过组合所有给定答案,此方法应适用于所有环境:

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

在Windows 8.1上:java.io.IOException:无法运行程序cls:CreateProcess error=2,系统找不到该文件specified@BenLeggiero如果由于某种原因,JVM在PATH环境变量的某个目录中找不到cls命令,则会发生此错误。这段代码所做的只是根据默认系统配置调用Windows或Unix系统命令,分别清除命令提示符或终端窗口。这应该与打开终端窗口并键入cls,然后键入Enter键完全相同。Windows中没有cls可执行文件。这是cmd.exe的一个内部命令。正如其他人所说,这不仅是因为Windows没有cls可执行文件,还因为子进程的输出被重定向。这个答案也是meta上的一个主题。请参阅:实现这一点的更快方法是使用单个println打印一个50\r\n的字符串,因为println调用之间有明显的延迟。您如何知道控制台配置为显示多少行?在大多数情况下可能有效,但并非所有情况下都有效。这与适当的清除之间的最大区别在于,在后者中,
新输出将位于屏幕顶部,而不是底部。System.out.printlnnew Stringnew char[50]。替换\0\r\n;将更快更好地完成这项工作。@AaronEsau从JDK 11开始,您可以使用System.out.printlnSystem.lineSeparator.repeat50;这只是一个暗示,也许有人想清除屏幕,Actually@Sarz当前位置实际上清除屏幕本身没有什么意义,尽管这对我来说是工作。我有一个真实的项目,使用JNI在JAVA中清除屏幕。在匈牙利,我们说他用狼牙棒击打苍蝇。你想补充一下吗?这个字符串是什么?如果启用自动刷新,您需要刷新吗?它们是。明确地但是为什么“home”是必需的?@jdurston省略home不会将光标重置回窗口顶部。在Eclipse中不起作用,但在Linux终端中起作用。投你一票这只有在运行Java的终端模拟器支持ANSI转义码时才有效。Windows NT/XP/7/8/10 CMD无法启动如果您可以设置缓冲区索引位置,这将是唯一最简单的方法如果进程被中断,我想您可能会看到一些打印输出比其他打印输出先被删除,这对我不起作用?我在windows CMD上运行该程序,但屏幕(它不是clearedIt)应该在顶部!在Linux控制台上工作。这很好,但是您没有说明如何使用这些来清除Eclipse控制台。
System.out.print("\033\143");
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) {}
}
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) {}
}