Java PrintWriter有问题吗?
我有一个方法(PrintTree),它返回一个字符串(treeString),有多行。字符串如下所示:Java PrintWriter有问题吗?,java,printing,printwriter,Java,Printing,Printwriter,我有一个方法(PrintTree),它返回一个字符串(treeString),有多行。字符串如下所示: html head link body 当我将它打印到控制台时,它会正确地打印字符串。但是,当我尝试使用printWriter时,它不会输出任何内容 PrintWriter out=new PrintWriter(filePath); out.write(PrintTree(root)); out.close(); 我做错了什么?PrintWriter被缓冲。因此,只有当其内部缓冲区已满
html
head
link
body
当我将它打印到控制台时,它会正确地打印字符串。但是,当我尝试使用printWriter时,它不会输出任何内容
PrintWriter out=new PrintWriter(filePath);
out.write(PrintTree(root));
out.close();
我做错了什么?
PrintWriter
被缓冲。因此,只有当其内部缓冲区已满(这是特定于实现的)或当您.flush()
写入时,它才会“提交”写入
无论如何,这是2016年。所以,不要用那个。使用Files.newBufferedWriter()
,并使用try with resources语句:
final Path outfile = Paths.get(...);
try (
final Writer writer = Files.newBufferedWriter(path);
) {
out.write(PrintTree(root));
}
更重要的是,以这种方式及早发现错误,(我的重点是):
此类中的方法从不抛出I/O异常,尽管它的一些构造函数可能会抛出异常。客户端可以通过调用checkError()查询是否发生了任何错误
不调用
.checkError()
太容易了,太容易了,为什么要从过时的类开始呢?使用Files.newBufferedWriter()
。是否出现异常?没有异常。当我取出构造字符串的方法中的\n时(将所有内容放在一行上),它会打印出来。不过,我正试图让所有内容都在单独的一行上打印出来。