gpt4 book ai didi

java - IntelliJ Idea 调试/运行控制台; System.out.flush 不冲洗

转载 作者:搜寻专家 更新时间:2023-11-01 02:03:46 25 4
gpt4 key购买 nike

这几天一直困扰着我,因为它曾经有效。我升级了我的 intellij,现在它不起作用了。我不想回去,但我需要一个答案。

所以,我正在编写一个控制台应用程序,当它运行时,我希望有一个 shell'd 显示进度。它在运行时工作正常,但是当我在 IntelliJ Idea 中调试时,除非缓冲区包含换行符,否则 System.out.flush() 不会刷新到控制台。我编写了以下单元测试来确定是我还是我的应用程序。

@Test
public void flushTest() {
int loops = 100;
for (int i = 0 ; i < 100 ; ++i) {
System.out.print("This is a print, does it flush : " + i + "\r");
if (i %10 == 0) {
System.out.print("\n");
}
System.out.flush();
}
}

剧透,这是应用程序。我不知道发生了什么变化,但如果不进行完整构建并在命令行上运行,就很难调试显示问题。如果有人可以帮助我弄清楚为什么会发生这种变化和/或帮助我修复它以便正确刷新,我将不胜感激。

最佳答案

2016.3.5版本测试,问题依旧。

该错误是由于之后的所有字符都会在控制台中被清除。

例如,使用字符串“Test\r”,将把“Test”写入控制台,当光标向左移动“\r”后,所有字符“Test”被清除。所以你什么都看不到。

解决方法是将“\r”移动到字符串的开头。例如,“\rTest”将在控制台中看到输出。

以下代码将说明该错误。你会看到“0000”和“111”会出现1秒,然后全部被“22”清除。

System.out.print("0000\r");
Thread.sleep(1000);
System.out.print("111\r");
Thread.sleep(1000);
System.out.print("22\r");

关于java - IntelliJ Idea 调试/运行控制台; System.out.flush 不冲洗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39798849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com