This is my code for file management
package arbolBinario;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
public class archivos {
public archivos() {
}
public String LeeArchivo(String ruta) {
File archivo = null;
FileReader fr = null;
BufferedReader br = null;
String retorno = "";
try {
// Apertura del fichero y creacion de BufferedReader para poder
// hacer una lectura comoda (disponer del metodo readLine()).
archivo = new File(ruta);
fr = new FileReader(archivo);
br = new BufferedReader(fr);
// Lectura del fichero
String linea;
while ((linea = br.readLine()) != null) {
retorno = retorno+ linea +"\n";
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// En el finally cerramos el fichero, para asegurarnos
// que se cierra tanto si todo va bien como si salta
// una excepcion.
try {
if (null != fr) {
fr.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return retorno;
}
public void EscribirArchivo(boolean anexar,String ruta, String texto) {
FileWriter fichero = null;
PrintWriter pw = null;
try {
fichero = new FileWriter(ruta,anexar);
pw = new PrintWriter(fichero);
pw.println(texto);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// Nuevamente aprovechamos el finally para
// asegurarnos que se cierra el fichero.
if (null != fichero) {
fichero.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
Este es el codigo de mi arbol binario:
package arbolBinario;
import javax.swing.JOptionPane;
public class arbolBinario {
public Nodo raiz;
public arbolBinario() {
raiz = null;
}
public boolean estaVacio() {
return raiz == null;
}
public void insertar(int id, String nombre) {
Nodo nuevo = new Nodo();
nuevo.id = id;
nuevo.nombre = nombre;
if (raiz == null) {
raiz = nuevo;
} else {
Nodo aux = raiz;
Nodo padre;
while (true) {
padre = aux;
if (id < aux.id) {
aux = aux.izquierdo;
if (aux == null) {
padre.izquierdo = nuevo;
break;
}
} else {
aux = aux.derecho;
if (aux == null) {
padre.derecho = nuevo;
break;
}
}
}
}
}
public Nodo buscar(int id) {
Nodo aux = new Nodo();
aux = raiz;
while (aux.id != id) {
if (id < aux.id) {
aux = aux.izquierdo;
} else {
aux = aux.derecho;
}
if (aux == null) {
JOptionPane.showMessageDialog(null, "Nodo no encontrado");
return null;
}
}
JOptionPane.showMessageDialog(null, "Nodo encontrado: " + "\nId: " + aux.id + "----> Nombre: " + aux.nombre);
return aux;
}
public void eliminar(int id) {
Nodo aux = raiz;
Nodo padre = raiz;
boolean izq = true;
while (aux.id != id) {
padre = aux;
if (id < aux.id) {
izq = true;
aux = aux.izquierdo;
} else {
izq = false;
aux = aux.derecho;
}
if (aux == null) {
JOptionPane.showMessageDialog(null, "El nodo no existe");
}
}
if (aux.izquierdo == null && aux.derecho == null) {
if (aux == raiz) {
raiz = null;
} else if (izq) {
padre.izquierdo = null;
} else {
padre.derecho = null;
}
} else if (aux.derecho == null) {
if (aux == raiz) {
raiz = aux.izquierdo;
} else if (izq) {
padre.izquierdo = aux.izquierdo;
} else {
padre.derecho = aux.izquierdo;
}
} else if (aux.izquierdo == null) {
if (aux == raiz) {
raiz = aux.derecho;
} else if (izq) {
padre.izquierdo = aux.derecho;
} else {
padre.derecho = aux.izquierdo;
}
} else {
Nodo nodoReemplazo = obtenerReemplazo(aux);
if (aux == raiz) {
raiz = nodoReemplazo;
} else if (izq) {
padre.izquierdo = nodoReemplazo;
} else {
padre.derecho = nodoReemplazo;
}
nodoReemplazo.izquierdo = aux.izquierdo;
}
JOptionPane.showMessageDialog(null, "Nodo encontrado " + aux);
}
public Nodo obtenerReemplazo(Nodo nodoReem) {
Nodo reemplazarPadre = nodoReem;
Nodo reemplazo = nodoReem;
Nodo aux = nodoReem.derecho;
while (aux != null) {
reemplazarPadre = reemplazo;
reemplazo = aux;
aux = aux.izquierdo;
}
if (reemplazo != nodoReem.derecho) {
reemplazarPadre.izquierdo = reemplazo.derecho;
reemplazo.derecho = nodoReem.derecho;
}
JOptionPane.showMessageDialog(null, "El nodo que reemplazara el anterior es " + reemplazo);
return reemplazo;
}
public void imprimirInOrden(Nodo Raiz) {
if (Raiz != null) {
imprimirInOrden(Raiz.izquierdo);
System.out.println(Raiz.id);
imprimirInOrden(Raiz.derecho);
}
}
public void imprimirPreOrden(Nodo Raiz) {
if (Raiz != null) {
System.out.println(Raiz.id);
imprimirPreOrden(Raiz.izquierdo);
imprimirPreOrden(Raiz.derecho);
}
}
public void imprimirPostOrden(Nodo Raiz) {
if (Raiz != null) {
imprimirPostOrden(Raiz.izquierdo);
imprimirPostOrden(Raiz.derecho);
System.out.println(Raiz.id);
}
}
}
Este es el nodo de mi arbol binario:
package arbolBinario;
public class Nodo {
public int id;
public String nombre;
public Nodo izquierdo;
public Nodo derecho;
public Nodo() {
id = 0;
nombre = "";
izquierdo = null;
derecho = null;
}
public Nodo(int id, String nombre) {
this.id = id;
this.nombre = nombre;
}
}
Esto es lo que tengo en el main por el momento:
package arbolBinario;
import javax.swing.JOptionPane;
public class main {
public static void main(String[] args) {
archivos archivo = new archivos();
arbolBinario arbol = new arbolBinario();
String ruta = "C:\progra2\arbolLeer.txt";
String texto = " ";
String nombre = " ";
int id = 0;
JOptionPane.showMessageDialog(null, archivo.LeeArchivo(ruta));
}
}
The content of my file is as follows:
1 - Carlos
2 - Alberto
3 - Ericka
4 - Maria
5 - Juana
I already tried what I have done so far, and it is working correctly, the problem is that I need to take the data present in the file and pass it to another file in the following format
Carlos, 1
Alberto, 2
Ericka, 3
Maria, 4
Juana, 5
but before that I need to load the data in the tree, my doubt is that it is done by taking the present data from a txt file. I hope you can help me.