¿Alguien sabe cómo guardar y restaurar un objeto en un archivo en Android?android cómo guardar un objeto en un archivo?
Respuesta
Vea aquí un ejemplo de código: android how to save a bitmap - buggy code
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
Abrir un archivo usando openFileOutput() (http://developer.android.com/guide/topics/data/data-storage.html#filesInternal), que utilice un ObjectOutputStream (http://download.oracle.com/javase/1.4.2/docs/api/java/io/ObjectOutputStream.html) para escribir su objeto en un archivo.
Utilice su evil twin openFileInput() y ObjectInputStream() para invertir el proceso.
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();
}
}
- 1. Cómo guardar un objeto en un archivo en Delphi
- 2. ¿Cómo puedo guardar un objeto en un archivo?
- 3. Cómo guardar un Objeto QPixmap en un archivo?
- 4. Guardar un TObject en un archivo
- 5. guardar un objeto BufferedImage a Amazon S3 como un archivo
- 6. ¿Cómo guardar/guardar en caché un objeto de clase personalizado en Android?
- 7. ¿Guardar un NSView en un archivo png?
- 8. Elisp: cómo guardar datos en un archivo?
- 9. Cómo guardar un objeto con referencias circulares?
- 10. ¿Cómo after_save trabajo al guardar un objeto
- 11. Guardar un archivo temporal
- 12. Delphi 2010: ¿Cómo guardar un registro completo en un archivo?
- 13. ¿Cómo guardar un archivo XML en un disco con python?
- 14. Cómo guardar un archivo png con transparencia?
- 15. Cómo guardar una imagen WPF en un archivo
- 16. Guardar salida de un archivo php en un archivo html
- 17. Cómo guardar un CookieJar?
- 18. Guardar certificado X509 en un archivo
- 19. Llamar a Django guardar en un objeto QuerySet - El objeto 'QuerySet' no tiene ningún atributo 'guardar'
- 20. cómo clonar un objeto en Android?
- 21. Cómo analizar un objeto JSON en Android
- 22. Cómo guardar un hash en un CSV
- 23. Java: Guardar StreamResult en un archivo
- 24. ¿Guardar CGImageRef en un archivo png?
- 25. Guardar un archivo usando libcurl en C
- 26. ¿Cómo guardar, exportar o convertir un Android XML Drawable como un archivo de imagen PNG?
- 27. Cómo guardar un NSImage como un nuevo archivo
- 28. ¿Cómo guardar el objeto C++ en un archivo xml y restaurar de nuevo?
- 29. ¿Cómo serializo un objeto y lo guardo en un archivo en Android?
- 30. ¿Cómo guardar backbuffer en un archivo en DirectX 10?
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
He descubierto que es un problema de contexto. – Fabien