2010-09-02 17 views

Répondre

3

Cela dépend si vous voulez enregistrer le fichier sur un média interne ou externe. Pour les deux cas, il y a de grands échantillons sur Android Site DEV: http://developer.android.com/guide/topics/data/data-storage.html - cela devrait definetly aider

+0

Je veux l'enregistrer en interne. Im regarder ObjectOutputStream maintenant et son aspect intéressant, mais ne sais pas pourquoi, ne peut pas obtenir "fos = openFileOutput (filename, Context.MODE_PRIVATE);" pour travailler, il n'accepte pas mon paramètre de nom de fichier String ... qu'est-ce que c'est? – Fabien

+0

Ive a découvert que c'est un problème de contexte. – Fabien

0

Voici un exemple testé de la suggestion de @ yayay. Notez que l'utilisation de readObject() renvoie un Object. Vous devrez donc effectuer un cast, bien que le compilateur se plaindra qu'il s'agit d'une distribution non cochée. Je peux quand même bien exécuter mon code. Vous pouvez en savoir plus sur le problème de diffusion here.

Assurez-vous que votre classe (dans mon cas, ListItemsModel) est sérialisable, parce que le writeObject() sérialisera votre objet et le readObject() sera désérialiser. Si ce n'est pas le cas (vous n'obtenez aucune persistance et le logcat lance un NotSerializableException), alors assurez-vous que votre classe implémente java.io.Serializable, et vous êtes prêt à partir. Notez qu'aucune méthode ne doit être implémentée dans cette interface. Si votre classe ne peut pas implémenter Serializable et fonctionner (par exemple, des classes de bibliothèques tierces), this link vous aide à sérialiser votre objet.

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(); 
     } 
}