2016-02-19 42 views
-1

我有一个方法(PrintTree),它返回一个字符串(treeString),有多行。该字符串看起来像这样:问题PrintWriter?

html 
head 
link 
body 

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

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

我在做什么错?

+0

为什么你使用过时的类开始?使用'Files.newBufferedWriter()'。 – fge

+0

你有没有得到一些例外? – nnunes10

+0

没有例外。当我在构建我的String的方法中取出\ n(将所有内容放在一行中)时,它会打印出来。但是,我试图让所有内容都在单独的行上打印出来。 – nyklyfe

回答

0

PrintWriter被缓冲。因此,当它的内部缓冲区已满(并且这是特定于实现的)或者当您的内部缓冲区时,它只会“提交”写入。

无论如何,这是2016年。所以,不要使用它。使用Files.newBufferedWriter(),和一个try-与资源声明:

final Path outfile = Paths.get(...); 

try (
    final Writer writer = Files.newBufferedWriter(path); 
) { 
    out.write(PrintTree(root)); 
} 

这是所有到这样的行为,以早期发现错误是,quoting the javadoc(重点煤矿)更重要的是:

的方法这个类从来没有抛出I/O异常,虽然它的一些构造函数可能。客户可以通过调用checkError()来查询是否发生了错误。

而且太简单了,太简单了,不要致电.checkError()