写入文件打印空白文件



我拥有的程序当前是由两种类型的节点组成的二进制树:问题和答案。

填充树后,我试图使用树的预订遍历来打印树的结构。我当前的代码是:

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());

在各自的位置代替印刷作者的位置,将正确的输出产生到控制台。

按下以下作者:

private static void writeToFile(LinkedBinaryTreeNode<String> node){
    PrintWriter writer = null;
    try {
        writer = new PrintWriter("output.txt");
        node.traversePreorder( n -> {
            if( n.isLeaf() ){
                writer.println("A: " + n.getData());
            } else {
                writer.println("Q: " + n.getData());
            }
        });
        writer.flush();
    } catch (IOException e ){
        e.printStackTrace();
    } finally {
        if (writer != null) {
            writer.close();
        }
    }
}