我有一个方法(PrintTree),它返回一个包含多行的字符串(treeString)。字符串如下所示:
html
head
link
body
当我将其打印到控制台时,它会正确打印字符串。但是,当我尝试使用printWriter时,它不会输出任何内容。
PrintWriter out=new PrintWriter(filePath);
out.write(PrintTree(root));
out.close();
我做错了什么?
答案 0 :(得分:0)
PrintWriter
已缓冲。因此,它只会"提交"当内部缓冲区已满(并且是特定于实现的)或者.flush()
时,它会写入。
无论如何,这是2016年。所以,不要使用它。使用Files.newBufferedWriter()
和try-with-resources语句:
final Path outfile = Paths.get(...);
try (
final Writer writer = Files.newBufferedWriter(path);
) {
out.write(PrintTree(root));
}
以这种方式尽早发现错误更为重要quoting the javadoc(强调我的):
此类中的方法永远不会抛出I / O异常,尽管它的一些构造函数可能会。客户端可以通过调用checkError()来查询是否发生了任何错误。
太容易了,太容易了,不能拨打.checkError()
。