64 java
在Java应用程序中,我正在使用一些调用System.out.println().现在我想找到一种以编程方式删除这些东西的方法.
我找不到谷歌的任何解决方案,所以有任何提示吗?
Bal*_*usC 61
您可以将退格字符打印的\b次数与之前打印的字符一样多.
System.out.print("hello");
Thread.sleep(1000); // Just to give the user a chance to see "hello".
System.out.print("\b\b\b\b\b");
System.out.print("world");
Run Code Online (Sandbox Code Playgroud)
注意:在Mars(4.5)之前的旧版本中,这在Eclipse控制台中无法正常工作.然而,这在命令控制台中完美无缺.另请参见如何使退格\ b在Eclipse的控制台中工作?
luk*_*ymo 22
不支持在Java中清除屏幕,但您可以尝试一些黑客来实现此目的.
a)对Windows使用OS-depends命令,如下所示:
Runtime.getRuntime().exec("cls");
Run Code Online (Sandbox Code Playgroud)
b)放一堆新线(这使得屏幕很清晰)
c)如果您想关闭System.out,可以试试这个:
System.setOut(new PrintStream(new OutputStream() {
@Override public void write(int b) throws IOException {}
}));
Run Code Online (Sandbox Code Playgroud)
Lab*_*Cat 18
您可以使用向上光标删除一行,删除文本,或者只使用旧文本用新文本覆盖.
int count = 1;
System.out.print(String.format("\033[%dA",count)); // Move up
System.out.print("\033[2K"); // Erase line content
Run Code Online (Sandbox Code Playgroud)
或清除屏幕
System.out.print(String.format("\033[2J"));
Run Code Online (Sandbox Code Playgroud)
这是标准的,但根据维基百科,Windows控制台不遵循它.
看看:http://www.termsys.demon.co.uk/vtansi.htm
小智 7
我使用blueJ进行java编程.有一种方法可以清除它终端窗口的屏幕.试试这个:-
System.out.print ('\f');
Run Code Online (Sandbox Code Playgroud)
这将清除此行之前打印的内容.但这在命令提示符下不起作用.
System.out是一个PrintStream,并且本身并没有提供任何方法来修改输出的内容.根据支持该对象的内容,您可能会也可能无法修改它.例如,如果要重定向System.out到日志文件,则可以在事后修改该文件.如果它直接进入控制台,文本一旦到达控制台缓冲区的顶部就会消失,但是没有办法以编程方式搞乱它.
我不确定你希望完成什么,但是你可能想要考虑创建一个代理PrintStream来在消息输出时过滤消息,而不是试图在事后删除消息.
只是为了添加 BalusC 的答案......
System.out.print("\b \b")延迟重复调用会产生与我们在 {Windows 7 命令控制台/Java 1.6} 中按退格键时完全相同的行为
小智 5
要清除“输出”屏幕,您可以按CTRL+ 来模拟一个真实的人L(清除输出)。您可以使用Robot()类实现此目标,方法如下:
try {
Robot robbie = new Robot();
robbie.keyPress(17); // Holds CTRL key.
robbie.keyPress(76); // Holds L key.
robbie.keyRelease(17); // Releases CTRL key.
robbie.keyRelease(76); // Releases L key.
} catch (AWTException ex) {
Logger.getLogger(LoginPage.class.getName()).log(Level.SEVERE, null, ex);
}
Run Code Online (Sandbox Code Playgroud)
有两种不同的方法可以清除BlueJ中的终端。您可以让BlueJ在每次交互式方法调用之前自动清除终端。为此,请激活终端“选项”菜单中的“方法调用时清除屏幕”选项。您也可以从程序内部以编程方式清除终端。打印换页符(Unicode 000C)会清除BlueJ终端,例如:
System.out.print('\u000C');
Run Code Online (Sandbox Code Playgroud)