Запись в файл печати пустого файла

В настоящий момент у меня есть двоичное дерево, состоящее из двух типов узлов: Вопросы и Ответы.

После того, как дерево было заполнено, я пытаюсь распечатать структуру дерева, используя предварительный обход дерева. Мой текущий код такой:

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

в соответствующих местах, заменяя принтер, выдает правильный вывод на консоль.

1 ответ

Закройте писателя следующим образом:

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();
        }
    }
}
Другие вопросы по тегам