Tengo el siguiente HashMap:¿Cómo leer y escribir un HashMap en un archivo?
HashMap<String,Object> fileObj = new HashMap<String,Object>();
ArrayList<String> cols = new ArrayList<String>();
cols.add("a");
cols.add("b");
cols.add("c");
fileObj.put("mylist",cols);
lo escribo en un archivo de la siguiente manera:
File file = new File("temp");
FileOutputStream f = new FileOutputStream(file);
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject(fileObj);
s.flush();
Ahora quiero leer este archivo de nuevo a un HashMap, donde el objeto es una Lista de arreglo. Si yo simplemente:
File file = new File("temp");
FileInputStream f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(f);
fileObj = (HashMap<String,Object>)s.readObject();
s.close();
Esto no me da el objeto en el formato que he guardado en Se devuelve una tabla con 15 elementos nulos y la < milista, [a, b, c]. > par en el 3er elemento. Quiero que devuelva solo un elemento con los valores que le di en primer lugar.
// ¿Cómo puedo volver a leer el mismo objeto en un HashMap?
OK Así que basado en la nota de Cem: Esto es lo que parece ser la explicación correcta:
ObjectOutputStream serializa los objetos (HashMap en este caso) en cualquier formato que ObjectInputStream entenderá deserializar y lo hace de forma genérica para cualquier objeto serializable Si desea que se serialice en el formato que desea, debe escribir su propio serializador/deserializador.
En mi caso: simplemente repito cada uno de esos elementos en el HashMap cuando leo el Objeto desde el archivo y obtengo los datos y hago lo que quiera con él. (ingresa al ciclo solo en el punto donde hay datos).
Gracias,
¿Qué quiere decir con "no me da el objeto en el formato en que lo guardé"? Proporcione algunos ejemplos de lo que está viendo y de lo que espera. –
¿Por qué no se declara su HashMap como 'HashMap>'? –
+1 para HashMap> –
Hbas