2010-09-02 16 views

Respuesta

3

Depende si desea guardar el archivo en un medio interno o externo. Por tanto la situación hay grandes muestras en Android DEV sitio: http://developer.android.com/guide/topics/data/data-storage.html - esto le ayudará definitivamente

+0

Quiero guardarlo en interno. Estoy viendo ObjectOutputStream ahora y su aspecto es interesante pero no sé por qué, no puedo obtener "fos = openFileOutput (filename, Context.MODE_PRIVATE);" para trabajar, no acepta mi parámetro de nombre de archivo String ... ¿qué diablos? – Fabien

+0

He descubierto que es un problema de contexto. – Fabien

0

Aquí hay un ejemplo comprobado de la sugerencia de @yayay. Tenga en cuenta que al usar readObject() se devuelve un Object, por lo que deberá realizar el colado, aunque el compilador se quejará de que se trata de un casteo no verificado. Todavía puedo ejecutar mi código bien sin embargo. Puede leer más sobre el tema de casting here.

Sólo asegúrese de que su clase (en mi caso, ListItemsModel) es serializable, debido a que el writeObject() serializará su objeto, y el readObject() se deserializar ella. Si no lo es (no obtiene persistencia y el logcat arroja un NotSerializableException), asegúrese de que su clase implemente java.io.Serializable, y listo. Tenga en cuenta que no es necesario implementar ningún método en esta interfaz. Si su clase no puede implementar Serializable y funciona (por ejemplo, clases de biblioteca de terceros), this link le ayuda a serializar su objeto.

private void readItems() { 

     FileInputStream fis = null; 
     try { 
      fis = openFileInput("groceries"); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     try { 
      ObjectInputStream ois = new ObjectInputStream(fis); 
      ArrayList<ListItemsModel> list = (ArrayList<ListItemsModel>) ois.readObject(); 
     } catch (IOException | ClassNotFoundException e) { 
      e.printStackTrace(); 
} 

private void writeItems() { 

     FileOutputStream fos = null; 
     try { 
      fos = openFileOutput("groceries", Context.MODE_PRIVATE); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     try { 
      ObjectOutputStream oos = new ObjectOutputStream(fos); 
      oos.writeObject(itemsList); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
} 
Cuestiones relacionadas