Título: Java leer datos serializados Publicado por: hubben en 3 Junio 2013, 11:57 am Buenas, mi problema es que al leer los datos serializados en java, no consigo encontrar la forma de buscar por sus palabras un dato de los que he metido, es decir,
Yo introduzco unos "Candidatos", con un nombre, nif, telefono... , y lo que quiero es poder buscar una palabra de estos Candidatos y que unicamente me de el candidato serializado que contenga esa palabra Yo busco : "juan" Saldría : "Nombre : juan, NIF : 52554454K, telefono : 91678887878" El trozo que tengo de código que he podido hacer es este : Código: public static String CandidatoOficial() throws FileNotFoundException, UnsupportedEncodingException, IOException { Si, me da todos valores del candidato, lo sé, no sé hacer la distinción. Bueno, esa es mi duda, si alguien puede ayudarme... Muchas gracias! Título: Re: Java leer datos serializados Publicado por: RyogiShiki en 3 Junio 2013, 20:43 pm Así no se deserializa un objeto. En todo caso, existe la clase Candidato? O cómo estás metiendo todos los candidatos en el archivo .dat? Creo que estás confundiendo la serialización de un objeto on el almacenamiento de información en un archivo de texto.
Saludos Título: Re: Java leer datos serializados Publicado por: hubben en 3 Junio 2013, 21:25 pm Buenas,
si, si existe la clase Candidato los estoy metiendo así : Aclaraciones : CrearCandidato es una interfaz con jTextField, tenngo que guardar los datos que meto en ellos, y despues poder buscar en esos datos la palabra que quiero y mostrar unicamente a ese candidato Citar public static boolean introducirCandidato() throws AgenciaException { Candidato can = new Candidato(CrearCandidatos.jTextField1.getText(), CrearCandidatos.jTextField2.getText(), Integer.parseInt(CrearCandidatos.jTextField3.getText()), Double.parseDouble(CrearCandidatos.jTextField14.getText()), Integer.parseInt(CrearCandidatos.jTextField15.getText())); //Introducimos lo introducido en el jtextField en un nuevo candidato candidato.put(nuevoCandidato, can); return true; } Aclaracion : 'candidato' es un hashmap tal que así Citar static HashMap<String, Candidato> candidato = new HashMap<>(); Citar public static void serializar() { FileOutputStream fosPro; try { fosPro = new FileOutputStream("candidatos.dat"); ObjectOutputStream oosPro = new ObjectOutputStream(fosPro); oosPro.writeObject(candidato); Integer cont = new Integer(Candidato.getContador()); oosPro.writeObject(cont); } catch (FileNotFoundException ex) { Logger.getLogger(Candidato.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(Candidato.class.getName()).log(Level.SEVERE, null, ex); } } Lo que pasa es eso, que se guardan, pero al buscarlos, no sé como hacerlo, quizás como tu digas que estoy confundiendo la deserializacion. por ahí he leído que meta los datos en arrays también aparte de serializarlos para después que sea más facil buscarlos, pero también ando perdido en como leer unicamente un candidato con esto Gracias, un saludo Título: Re: Java leer datos serializados Publicado por: RyogiShiki en 4 Junio 2013, 07:38 am Así como al serealizar un objeto utilizas un ObjectOutputStream, para deserializar, usas un ObjectInputStream. Si serializas un HashMap, entonces al deserializar obtienes igualmente un HashMap (Exactamente no obtienes un HashMap, pero si un Object que se puede castear a HashMap).
Por ejemplo: Código
Ahora bien puedes iterar sobre los elementos del HashMap para realizar las operaciones requeridas. PD: Ten en cuenta que para serializar corretamente un HashMap, todo su árbol (sus valores y llaves) deben ser completamente serializables. Documentación: ObjectInputStream (http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html) Espero sea de ayuda. Saludos |