Запись в файл печати пустого файла
В настоящий момент у меня есть двоичное дерево, состоящее из двух типов узлов: Вопросы и Ответы.
После того, как дерево было заполнено, я пытаюсь распечатать структуру дерева, используя предварительный обход дерева. Мой текущий код такой:
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();
}
}
}