【发布时间】:2017-12-12 20:43:03
【问题描述】:
我的程序目前是一个二叉树,由两种类型的节点组成:问题和答案。
树被填充后,我尝试使用树的前序遍历来打印树的结构。我目前的代码是这样的:
private static void writeToFile(LinkedBinaryTreeNode<String> node){
try {
PrintWriter writer = new PrintWriter("output.txt");
node.traversePreorder( n -> {
if( n.isLeaf() ){
writer.println("A: " + n.getData());
} else {
writer.println("Q: " + n.getData());
}
});
} catch (IOException e ){
e.printStackTrace();
}
}
每当我运行程序并创建完整的树并尝试将结构输出到文件时,我都会得到一个空白文件。
我知道自放置以来逻辑是正确的:
System.out.println("A: " + n.getData());
和:
System.out.println("Q: " + n.getData());
在它们各自的位置替换打印机,生成正确的输出到控制台。
【问题讨论】:
-
更准确地说,你有没有
flush()你的Writer? (在某些情况下,close()在内部调用flush())。 -
不,我忘了这样做。是放在 try 块中还是必须放在最后的 finally 子句中?
-
flush()进入try和close()进入finally。请注意,您也可以使用try-with-resources,但您必须使用flush。
标签: java file-io binary-tree printwriter