我不知道为什么我的代码第一次只在文件中写入然后什么也没有,我认为问题是salida.close(),但我不确定。一点帮助将不胜感激。该方法本身将二叉树保存在文件中。如果您需要更多信息,请问我。这是我的代码:
public boolean guardarAgenda() throws IOException
{
NodoAgenda raiz;
raiz = this.root;
guardar(raiz);
if(this.numNodes == 0)
return true;
else return false;
}
public void guardar(NodoAgenda nodo) throws IOException
{
FileWriter fich_s = new FileWriter("archivo.txt");
BufferedWriter be = new BufferedWriter(fich_s);
PrintWriter output = new PrintWriter(be);
Parser p = new Parser();
if (nodo != null)
{
guardar(nodo.left);
p.ponerPersona(nodo.info);
String linea = p.obtainLine();
salida.println(linea);
guardar(nodo.right);
this.numNodes--;
}
output.close();
}
答案 0 :(得分:1)
您在多个通话中打开相同的文件,甚至没有appending content选项。所以难怪你在处理结束后没有找到你期望的东西。
当使用递归并在每次调用时使用相同的资源时,最好有第二个方法将该结果作为参数,并且只进行写入/添加,打开/实例化应该在启动第一次打电话,类似于此:
public void guardar(NodoAgenda nodo) throws IOException
{
FileWriter fich_s = new FileWriter("archivo.txt");
BufferedWriter be = new BufferedWriter(fich_s);
PrintWriter salida = new PrintWriter(be);
if (nodo != null)
{
guardar(nodo.left, salida);
}
output.close();
}
public void guardar(NodoAgenda nodo, PrintWriter salida) throws IOException
{
if (nodo != null)
{
Parser p = new Parser();
guardar(nodo.left);
p.ponerPersona(nodo.info);
String linea = p.obtainLine();
salida.println(linea);
guardar(nodo.right, salida);
this.numNodes--;
}
}