Autor
|
Tema: Error en lectura de Fichero (Leído 7,521 veces)
|
Afsoon
Desconectado
Mensajes: 130
|
Hola buenas, estoy aprendiendo a programar en java y estoy programando un proyecto que me mando mi hermano para ir aprendiendo, pero tengo un error que mas por darle vueltas no lo consiguo resolver, se donde es y el porque pero no encuentro solucion, aqui teneis el codigo uno es para la lectura y otro para la escritura, el de la escritura esta bien me funciona a la perfeccion, el problema es el de la lectura y es la linea entre los chekpoint(para "depurar en ejecucio") 3 y 3.5 el error public List<Entidad> obtenerVariasEntidades() { List<Entidad> entidad = new ArrayList<Entidad>(); boolean est = false; try{ while(!est) { System. out. println("\t Inserte el CIF que desee buscar"); String cif = b. readLine(). trim(). toUpperCase(); Persona persona; System. out. println("Checkpoing entrada 3"); persona = (Persona) entrada.readObject(); //Este es el fallo lee un Object pero lo que inserte es un Array System. out. println("Checkpoing entrada 3.5");//pero si veis mas abajo esta guardado como un Object while(persona != null) { if(persona.getCIF().equalsIgnoreCase(cif)) { break; } while(persona == null) { System. out. println("\t> No hay ninguna persona guardada con ese CIF."); break; } } System. out. println("Checkpoing entrada 4"); Entidad en = persona; entidad.add(en); System. out. println("¿Desea buscar otra persona?"); opc = b.readLine().trim().toUpperCase(); if(opc.equals("SI")) est = false; if(opc.equals("NO")) break; } System. err. print(e. getMessage()); System. err. print(e. getMessage()); } return entidad; } public void escribirVariasEntidades(List<Entidad> entidades) { entidades = new ArrayList<Entidad>(); boolean est = false; while(!est){ try{ LeerEscribirEntidad lee = new LeerEscribirEntidad(b); Persona persona = lee.obtenerPersonaPantalla(); Entidad en = persona; entidades.add(en); System. err. println(e. getMessage()); } try { salida.writeObject(entidades);//Aqui escribo en el archivo pero como un Object salida.close(); e.printStackTrace(); } System. out. println("\t ¿Desea insertar otro cliente?"); System. out. println("\t Inserte si para otro cliente"); System. out. println("\t Inserte no para salir"); try { String s = b. readLine(). trim(). toUpperCase(); if(s.equals("SI")) est = false; if(s.equals("NO")) est = true; e.printStackTrace(); } } }
El error cuando lo ejecuto: Checkpoing entrada 3 java.util.ArrayList cannot be cast to es.practicasJava.lecturaFicheros.modelo.Persona PD:He consultado en la api sobre read y nada y mirando en paginas y tampoco nada
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Intentas hacer un cast explicito de un array a una clase persona, y los tipos no son validos, por eso no va bien.
Saludos
|
|
|
En línea
|
|
|
|
Afsoon
Desconectado
Mensajes: 130
|
Nada no lo consiguo creo que lo estoy yo mal porque tu respuesta tiene sentido pero cuando lo intento lo hago mal, estoy probando con esto List <type > <name > = (List) new Persona ();
|
|
« Última modificación: 2 Septiembre 2010, 12:41 pm por Afsoon »
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Nada no lo consiguo creo que lo estoy yo mal porque tu respuesta tiene sentido pero cuando lo intento lo hago mal, estoy probando con esto List <type > <name > = (List) new Persona ();
es precisamente lo que no puedes hacer, como ya te he dicho el cast explicito es para objetos o datos similares por asi decirlo, si quiere convertirlo tendrás que crear un método que lo haga manualmente, osea pasando los datos de persona a un list de uno en uno, si es que persona es un almacenador de tipo vector. Saludos
|
|
|
En línea
|
|
|
|
Afsoon
Desconectado
Mensajes: 130
|
No, persona no es un almacenador de tipo vector, es una clase en la que se encuentra las variables que pregunta el programa para guardar en el archivo una vez que la persona se ha registrado
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
No, persona no es un almacenador de tipo vector, es una clase en la que se encuentra las variables que pregunta el programa para guardar en el archivo una vez que la persona se ha registrado
Tiene que ser una extensión de clase list o de la clase padre de list para poder hacer ese tipo de cast. Saludos
|
|
|
En línea
|
|
|
|
Afsoon
Desconectado
Mensajes: 130
|
Arreglado ya puedo iterar en una lista, pero no se como hacer que se me muestre el que se esta buscando y esa solucion me soluciona algo pero me saca otro fallo, todo lo que no este registrado como una array salta una excepcion, ahora pongo el codigo de la solucion pero no se como hacer que solo me muestre el que se busca en vez de todos. List lista = (List)entrada. readObject(); while(it.hasNext()){ Entidad e = (Entidad)it.next(); persona = (Persona) e; System. out. println(persona. getNombre()); }
|
|
|
En línea
|
|
|
|
Afsoon
Desconectado
Mensajes: 130
|
Se puede cerrar ya se como buscar cuando se extrae la array del fichero y al final el de varias consulta sera para extraer la array de cuando se inserta varios clientes
|
|
|
En línea
|
|
|
|
Debci
Wiki
Desconectado
Mensajes: 2.021
Actualizate o muere!
|
Se puede cerrar ya se como buscar cuando se extrae la array del fichero y al final el de varias consulta sera para extraer la array de cuando se inserta varios clientes
=D Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con la lectura de un fichero
Programación C/C++
|
DarkSorcerer
|
3
|
2,388
|
22 Noviembre 2013, 02:43 am
por Vaagish
|
|
|
Lectura fichero SAV (Hexadecimal)
Java
|
HelThunder
|
2
|
2,201
|
29 Diciembre 2013, 19:14 pm
por ThinkByYourself
|
|
|
Problema lectura fichero
Java
|
Thryks
|
2
|
2,357
|
14 Marzo 2014, 16:48 pm
por 1mpuls0
|
|
|
Problema lectura de datos por fichero
Programación C/C++
|
mester
|
2
|
2,098
|
7 Octubre 2015, 21:48 pm
por mester
|
|
|
Java lectura de fichero
Programación General
|
kur79
|
1
|
2,056
|
18 Noviembre 2015, 11:49 am
por Baal_30
|
|