任何正文都可以告诉我在Java中用于清除屏幕的代码是什么?例如在C ++中
system("CLS");
Java中使用什么代码来清除屏幕?
谢谢!
答案 0 :(得分:97)
由于这里有几个答案显示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开始工作:
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进程连接到控制台时,即从命令行启动而没有输出重定向时,它将清除控制台。
答案 1 :(得分:67)
您可以使用以下代码清除命令行控制台:
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
答案 2 :(得分:15)
这就是我处理它的方式。此方法适用于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.
}
}
答案 3 :(得分:12)
获得此功能的方法是打印多行(“\ n”)并模拟清晰屏幕。最后清楚,最多在unix shell中,不会删除以前的内容,只会将其向上移动,如果向下滚动,则可以看到之前的内容。
以下是示例代码:
for (int i = 0; i < 50; ++i) System.out.println();
答案 4 :(得分:12)
如果您想要一种更独立于系统的方法,可以使用JLine库和ConsoleReader.clearScreen()。谨慎检查当前环境中JLine and ANSI is supported是否值得做。
以下代码对我有用:
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中运行它。
答案 5 :(得分:11)
在您的班级中创建一个方法,如下所示:[as @Holger说here。]
const LocationForm = ({listingData, onSave, loading, errors}) => {
return (
<form onSubmit={onSave}>
<h1>Add / Edit Location</h1>
<TextInput />
{/*Here below is where we submit out input data*/}
<input type="submit" disabled={loading} value={loading ? 'Saving...' : 'Save'} className="buttonSave"/>
</form>
);
};
这至少适用于Windows,到目前为止我还没有检查过Linux。如果有人检查它是否适用于Linux,请告诉我它是否有效。
另一种方法是在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) {}
}
中编写此代码:
clrscr()
我不建议您使用此方法。
答案 6 :(得分:7)
尝试以下方法:
System.out.print("\033\143");
这在Linux环境中可以正常工作
答案 7 :(得分:5)
Runtime.getRuntime()。exec(cls)在我的XP笔记本电脑上无效。这样做了 -
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
希望这很有用
答案 8 :(得分:2)
您可以使用cls
的模拟
for (int i = 0; i < 50; ++i) System.out.println();
答案 9 :(得分:2)
如果你在Bluej或任何其他类似的软件中这样做,这将有效。
System.out.print('\u000C');
答案 10 :(得分:1)
您需要将控制字符用作反斜杠(\ b)和回车符(\ r)。默认情况下,它处于禁用状态,但是“控制台”视图可以解释这些控件。
Windows>首选项和运行/调试>控制台,然后选择解释ASCII控制字符以启用它
完成这些配置后,您可以使用以下控制字符来管理控制台:
\ t-标签。
\ b-退格键(在文本中向后退一步或删除单个字符)。
\ n-新行。
\ r-回车。 ()
\ f-表单供稿。
更多信息,请访问:https://www.eclipse.org/eclipse/news/4.14/platform.php
答案 11 :(得分:1)
通过结合所有给定的答案,此方法应可在所有环境下工作:
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) {}
}
答案 12 :(得分:0)
尝试一下:仅适用于控制台,不适用于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) {}
}
答案 13 :(得分:-3)
您需要使用JNI。
首先使用visual studio创建一个.dll,即调用系统(&#34; cls&#34;)。 之后使用JNI来使用这个DDL。
我发现这篇文章很好:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2