2 回答
TA贡献2021条经验 获得超8个赞
错误消息通过不同的输出流打印。标准输出流stdout用于正常记录/输出,错误(通过 System.err.println)转到stderr. 您的控制台/终端同时显示两者,但它们不会互相等待完成打印内容。
编辑:也许这也有帮助。
EDIT2:如果您将错误更改为打印到文件,您将在控制台/终端中丢失错误输出。但也许这对你没问题?像这样:
//set err out to print to file
PrintStream ps = new PrintStream("err.log");
System.setErr(ps);
//cause exception for testing it
String s = null;
s.length();
如果您希望将错误和标准输出都打印到控制台/终端,则无法控制两个流的时间,因为每个打印行都是独立的操作。
TA贡献1906条经验 获得超3个赞
String separator = "----------";
System.out.format("ID|%-30s|%-30s|birth date|%n", "name", "email");
System.out.print("--+" + separator + separator + separator
+ "+" + separator + separator + separator + "+"
+ separator + "+\n");
System.out.flush();
while ((line = br.readLine()) != null)
由于 System.out 和 System.err 来自不同的输出流,它们不会等待对方完成。在打印语句之后立即清除缓冲区内存可以解决问题。
添加回答
举报