如何清除控制台?

谁能告诉我在 Java 中清晰屏幕使用的代码是什么?

例如,在 C + + 中:

system("CLS");

在 Java 中用什么代码来清除屏幕?

798566 次浏览

一种获得这种效果的方法是打印多个结束行(“ n”)并模拟清晰的屏幕。最后清除,最多在 unix 外壳中,不删除以前的内容,只是将其向上移动,如果向下滚动就可以看到以前的内容。

下面是一个示例代码:

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

如果您想要一种更加独立于系统的方法来完成这项工作,那么您可以使用 JLine库和 ()。审慎地检查 支持 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 + "'.");


}
}
}

在运行此命令时,如果您在提示符处键入“ 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 中运行,这个方法通常会清除控制台。

GetRuntime () . exec (cls)不能在我的 XP 笔记本电脑上工作

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

希望这个有用

你得用 JNI。

首先使用 Visual Studio 创建一个. dll,即调用系统(“ cls”)。 然后使用 JNI 来使用这个 DDL。

我发现这篇文章很不错:

Http://www.planet-source-code.com/vb/scripts/showcode.asp?txtcodeid=5170&lngwid=2

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

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

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

警告:

  • 这个 威尔工作在支持 ANSI 转义码的终端上
  • 它将 没有工作在 Windows 的 CMD 上
  • 它将在 IDE 的终端中工作

进一步阅读 看看这个

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

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

这个命令执行 没有工作,原因有二:

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

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

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

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

如果您在 Bluej 或任何其他类似的软件中这样做,那么这种方法就可以工作。

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

在类中创建一个方法,如下所示: [就像 @ 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) {}
}

这种方法至少适用于 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.print("\b"); // Prints a backspace

我不建议你使用这种方法。

试试以下方法:

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

这在 Linux 环境中可以很好地工作

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

Windows > Preferences and 运行/调试 > 控制台并选择 解释 ASCII 控制字符启用它

Console preferences in Eclipse

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

T-tab.

B-backspace (在文本中向后退一步或删除一个字符)。

新线路。

R-回程

F 型饲料。

eclipse console clear animation

更多信息请访问: https://www.eclipse.org/eclipse/news/4.14/platform.php

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