PrintWriter问题?

时间:2016-02-19 17:09:23

标签: java printing printwriter

我有一个方法(PrintTree),它返回一个包含多行的字符串(treeString)。字符串如下所示:

html 
head
link
body

当我将其打印到控制台时,它会正确打印字符串。但是,当我尝试使用printWriter时,它不会输出任何内容。

PrintWriter out=new PrintWriter(filePath);
out.write(PrintTree(root));
out.close();

我做错了什么?

1 个答案:

答案 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()