Java-BufferedWriter.write()和System.out.println()之间的区别?

时间:2018-06-25 12:36:52

标签: java

我一直在尝试解决一个称为Chebyshev定理(https://www.acmicpc.net/problem/4948)的算法问题

我遇到了一个有趣的情况。我还没有找出两者之间的区别。我希望可以在这里找到答案。

这是我的代码:

@HostListener('document:click', ['$event'])
handlerFunction(e: MouseEvent) {
    // ...
}

这是我的结果:

enter image description here

如您所见,这只是显示'System.out.prinln()'的结果。

是什么原因?

2 个答案:

答案 0 :(得分:5)

请参见doc

  

将文本写入字符输出流,缓冲字符,以便   提供有效的单个字符,数组和   字符串。

您可以致电flushclose以确保打印内容。

答案 1 :(得分:3)

这是一个简单的问题。

要使用'BufferedWriter'打印某些内容,您需要在想要打印出来的正确时间之后调用'flush()'。 因此,在代码中。

您需要修复此部分。

    System.out.println("syso: "+answer);
    bw.write("bw: "+answer);
}
bw.flush();

    System.out.println("syso: "+answer);
    bw.write("bw: "+answer);
    bw.flush();
}

然后,它将打印所需的结果,即使循环运行,也可以正常打印。

并检查是否为'flush()':What is the purpose of flush() in Java streams?

它说

  

刷新输出流,并强制写出所有缓冲的输出字节。刷新的一般约定是,调用它的指示是,如果先前写入的任何字节已由输出流的实现缓冲,则应立即将这些字节写入其预期的目的地。

因此,要写出来,您需要在“ write()”之后调用“ flush()”。如果尚未关闭'bw',它仍然可以重用。