2011-07-15 4 views
0

J'essaie de stocker une carte dans le stockage interne d'android.Ne pas lire ou écrire sur le stockage interne android

Mon code:

private void saveFavorite(){ 
    LinkedHashMap<String, LinkedList<MyCustomObject>> favorites = new LinkedHashMap<String, LinkedList<MyCustomObject>>(); 

    try{ 
     InputStream file = openFileInput(PATH); 
     BufferedInputStream buffer = new BufferedInputStream(file); 
     ObjectInput input = new ObjectInputStream (buffer); 
     try{ 
      Object o = input.readObject(); 
      if(o instanceof LinkedHashMap<?, ?>) 
       favorites = (LinkedHashMap<String, LinkedList<MyCustomObject>>)o; 
     } 
     finally{ 
      input.close(); 
     } 
    } 
    catch(ClassNotFoundException ex){ 
    } 
    catch(IOException ex){ 
    } 

    String favoriteName = "asd"; 


    favorites.put(favoriteName, myobject); 


    FileOutputStream fos; 
    try { 
     fos = openFileOutput(PATH, MODE_APPEND); 
     BufferedOutputStream buffer = new BufferedOutputStream(fos); 
     ObjectOutput output = new ObjectOutputStream(buffer); 
     try{ 
      output.writeObject(favorites); 
     }finally{ 
      output.close(); 
     } 
    }catch(IOException ex){ 
    } 
} 

MyCustomObject implémente Serializable

Lors du débogage, je ne vois pas de problème. Il semble qu'il lit une carte vide, puis écrit la carte avec une valeur mais quand je la relis, la carte est vide.

Aide s'il vous plaît.

MISE À JOUR: J'ai trouvé à l'intérieur/données/données/my_project_package_structure/fichiers/ un fichier appelé comme mon var PATH. Il grossit à chaque fois que j'appelle ma méthode de sauvegarde, donc je pense que ça écrit bien mais je ne sais pas ce que je fais de mal.

+0

S'il vous plaît envisager de faire ce qui suit: 1. Déplacez votre édition de solution à une nouvelle réponse. 2. Écrivez votre réponse. 3. Si personne n'écrit une réponse plus correcte ou complète après deux jours, revenez et acceptez votre réponse. – thegrinner

Répondre

0
try { 
    **fos = openFileOutput(PATH, MODE_APPEND);** 
    BufferedOutputStream buffer = new BufferedOutputStream(fos); 

devrait être

**fos = openFileOutput(PATH, MODE_PRIVATE);** 
Questions connexes