Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PrintWriter有问题吗?_Java_Printing_Printwriter - Fatal编程技术网

Java PrintWriter有问题吗?

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被缓冲。因此,只有当其内部缓冲区已满

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

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时(将所有内容放在一行上),它会打印出来。不过,我正试图让所有内容都在单独的一行上打印出来。