Vengo otra vez a incomodar con mis dudas >_<
Lo que hace mi programa es lo siguiente...
Mediante una interfaz gráfica tomo los datos de un usuario y los escribe a un txt
(Estoy usando Serializable, estoy escribiendo objetos heredados de CPersona).
Pero para crearlo tengo un Frame primero con 2 opciones, Añadir Usuario y otro que es Buscar, cada vez que le doy clic a Añadir se crea un nuevo objeto y así.
Los escribe supuestamente bien, entonces al momento que quiero recuperar los datos solo el primero me lo muestra, luego me marca un error, exactamente en este segmento
Código:
Sale con un 1, que quiere decir que solo se alcanzo a leer un objetocatch(IOException e) { e.printStackTrace(System.err); JOptionPane.showMessageDialog(null,"Error de salida "+ objCuenta); }
Mi profesor dice que es porqué estoy guardando algo que no es un objeto en el archivo, pero ya revise mi programa y no encuentro el error.
Este es el método que escribe en el archivo
Código:
Y este el encargado de mostrar los escritos en el archivopublic void Escribir(CPersona Obj) { ObjectOutputStream ObjSalida = null; try { ObjSalida = new ObjectOutputStream ( new BufferedOutputStream ( new FileOutputStream ("/media/ERKREZER/Trabajadores.txt", true) ) ); ObjSalida.writeObject(Obj); //System.out.print (Obj.toString()); } catch (IOException e) { e.printStackTrace(System.err); JOptionPane.showMessageDialog(null, "No se pudieron escribir los datos"); } try { ObjSalida.close(); } catch (IOException e) { e.printStackTrace(System.err); JOptionPane.showMessageDialog(null, "No se pudieron escribir los datos2"); } JOptionPane.showMessageDialog(null, "Aniadido satisfactoriamente"); Ventana1.hide(); }
Código:
El método toString lo tengo definido en la clase CPersona de esta manera:public static void Buscar() { ObjectInputStream ObjEntrada = null; int objCuenta = 0; CPersona Obj = null; try { ObjEntrada = new ObjectInputStream ( new BufferedInputStream ( new FileInputStream ("/media/ERKREZER/Trabajadores.txt") ) ); while (true) { Obj = (CPersona)ObjEntrada.readObject(); objCuenta++; Resultados.setText(Obj+""); } } catch (ClassNotFoundException e) { e.printStackTrace(System.err); JOptionPane.showMessageDialog(null, "Error, no se puede leer"); } catch (EOFException e) { System.out.println("Fin de archivo alcanzado"); } catch(IOException e) { e.printStackTrace(System.err); JOptionPane.showMessageDialog(null,"Error de salida "+ objCuenta); } try { ObjEntrada.close(); } catch(IOException e) { e.printStackTrace(System.err); JOptionPane.showMessageDialog(null,"Error"); } }
Código:
Use como guía el libro de Horton, y según yo estoy utilizando lo mismo pero no encuentro el problema... Estaría muy agradecido si me guiaran por el camino correcto public String toString() { StringBuffer strBuf = new StringBuffer(); strBuf.append("Nombre: " + getNombre()).append("\nCorreo: " + getCorreo()).append("\nPuesto: " + getPuesto()).append("\nFecha de Nacimiento: " + Fecha.getFecha()).append("\nNo. Usuario: " + String.valueOf(Numero) + '\n'); return strBuf.toString(); }
Gracias =D