Programación General > Java

 Guardar ArrayList en un archivo

(1/1)

OptimuZ:
Buenos dias, tengo un problema al guardar un arrayList, y es que el caso en netbeans me funciona perfectamente, pero cuando copio el codigo y lo pego en Jdeveloper, me pide que lo convierta a objeto, sino lo hago pe tira un error de compilación. Este de aqui es el codigo de guardar:


--- Código: Java ---    public static boolean grabarLista(ArrayList lista) {        boolean respuesta = false;        String mensaje = "";        String archivo = "lista.txt";        if (!lista.isEmpty()) {            try {                ObjectOutputStream ficheroSalida = new ObjectOutputStream(new FileOutputStream(new File(archivo)));                ficheroSalida.writeObject(lista);                ficheroSalida.flush();                ficheroSalida.close();                mensaje = "tDatos de personas guardados correctamente en " + archivo + ".";                System.out.println("tDatos de personas guardados correctamente en " + archivo + ".");                respuesta = true;            } catch (FileNotFoundException fnfe) {                mensaje = "tError al grabar personas: El fichero " + archivo + " no existe. ";                 System.out.println("tError: El fichero " + archivo + " no existe. ");                 respuesta = false;            } catch (IOException ioe) {                mensaje = "tError: Falló la escritura de las personas en el fichero" + archivo + ". ";                System.out.println("tError: Falló la escritura en el fichero" + archivo + ". ");                respuesta = false;            }        } else {             mensaje = "tNo hay datos de personas que guardar. La lista está vacía.";             System.out.println("tNo hay datos que guardar. La lista está vacía. ");             respuesta = false;        }        return respuesta;        } 
Jdeveloper me marca que haga conversión en la linea 8:

ficheroSalida.writeObject(lista);

El caso es que en el metodo de carga exactamente igual, este es el metodo de carga:


--- Código: Java ---    public static ArrayList<Alumno> cargar(File fichero){        ArrayList<Alumno> lista = null;        try {            ObjectInputStream ficheroEntrada = new ObjectInputStream(new FileInputStream(fichero));            lista = (ArrayList) ficheroEntrada.readObject();            ficheroEntrada.close();            if (lista == null) {                System.out.println("<Lista peliculas vacio>");            } else {                System.out.println("<Lista peliculas llena>");            }            return lista;        } catch (ClassNotFoundException cnfe) {            return null;        } catch (FileNotFoundException fnfe) {            return null;        } catch (IOException ioe) {            return null;        }    } 
me dice que tengo que realizar conversión en la linea 5:

lista = (ArrayList) ficheroEntrada.readObject();

Para la lectura del archivo tuve que realizar el casting, por que es el formato con el que lo guarde, el caso es que no funciona en JDeveloper, y en netbeans si, ¿de que otra manera puedo guardar un ArrayList en un archivo y luego cargarlo en un arrayList?

Gracias y un saludo.

Os digo que estos metodos

m0skit0:
¿toString()? ¿Dejar el ArrayList genérico (sin <Alumno>)?

OptimuZ:
Bien el metodo guardar ya funciona, tuve que generalizar como me comentastes, sin <Alumno>, y colocar el toString() en la lista antes de guardar.

Pero ahora lo que me falta es la carga del archivo, y pasarlo a un arrayList, me das a entender que con el toString() pueda solucionarlo, pero me sigue tirando el error, pero esta vez en la ejecución de la aplicación.


--- Código: Java ---    public static ArrayList cargar(File fichero){        ArrayList lista = null;        try {            ObjectInputStream ficheroEntrada = new ObjectInputStream(new FileInputStream(fichero));            lista = (ArrayList) ficheroEntrada.readObject();            ficheroEntrada.close();            if (lista == null) {                System.out.println("<Lista peliculas vacio>");            } else {                System.out.println("<Lista peliculas llena>");            }            return lista;        } catch (ClassNotFoundException cnfe) {            return null;        } catch (FileNotFoundException fnfe) {            return null;        } catch (IOException ioe) {            return null;        }    } 
En la linea 5 es donde me da el error, estoy seguro que tiene que ser algo del casting, pero no lo veo, he probado con ArrayList <String> y sigue igual, y en este metodo esta generalizado el arrayList, por eso no creo que alla problema.

Por otro lado el metodo que utilizo en otra clase, es este:


--- Código: Java ---    private void btnCargar_actionPerformed(ActionEvent e) {    File fichero = new File("alu_deg.txt");                if (fichero.exists()) {                    listaAlumnos.clear();                    listaAlumnos = Funciones.cargar(fichero);                    btnGuardar.setEnabled(true);                } else {                    listaAlumnos.clear();                }                    } 
La linea 6 del metodo, es la que dice que hay que convertirlo, que va directamente al metodo de carga de la clase funciones, no se donde más mirar, ¿Algún consejo?.

Un saludo y muchas gracias.

m0skit0:
Yo creo que no puedes cargar un array así desde un fichero. Prueba a cargar elemento por elemento.

Navegación

[0] Índice de Mensajes

Ir a la versión completa