Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con Lectura/Escritura de Objetos en Archivos

Estas en el tema de Problema con Lectura/Escritura de Objetos en Archivos en el foro de Java en Foros del Web. Saludos Vengo otra vez a incomodar con mis dudas >_< Lo que hace mi programa es lo siguiente... Mediante una interfaz gráfica tomo los datos ...
  #1 (permalink)  
Antiguo 05/11/2010, 00:38
Avatar de Luposz  
Fecha de Ingreso: agosto-2005
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Problema con Lectura/Escritura de Objetos en Archivos

Saludos
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:
catch(IOException e)
		{
			e.printStackTrace(System.err);
			JOptionPane.showMessageDialog(null,"Error de salida "+ objCuenta);
		}
Sale con un 1, que quiere decir que solo se alcanzo a leer un objeto

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:
public 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();
					}
Y este el encargado de mostrar los escritos en el archivo

Código:
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");
		}
	}
El método toString lo tengo definido en la clase CPersona de esta manera:

Código:
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();
	}
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

Gracias =D
  #2 (permalink)  
Antiguo 05/11/2010, 03:16
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Problema con Lectura/Escritura de Objetos en Archivos

¿Qué error te aparece?
http://download.oracle.com/javase/1....adObject%28%29

si haces

Cita:
while (true)
{
Obj = (CPersona)ObjEntrada.readObject();
objCuenta++;
Resultados.setText(Obj+"");
}
¿Cómo sabe cuando debe parar de leer objetos? Llegará un momento en que sólo recupere nulls (infinitamente)
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: escribir, fichero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:37.