2010-04-12 5 views
11

Désolé pour le titre ambigu mais je fais ce qui suit pour écrire une simple chaîne dans un fichier:Impossible d'écrire sur la carte SD - canWrite retourne faux

try { 
     File root = Environment.getExternalStorageDirectory(); 
     if (root.canWrite()){ 
      System.out.println("Can write."); 
      File def_file = new File(root, "default.txt"); 
      FileWriter fw = new FileWriter(def_file); 
      BufferedWriter out = new BufferedWriter(fw); 
      String defbuf = "default"; 
      out.write(defbuf); 
      out.flush(); 
      out.close(); 
     } 
     else 
      System.out.println("Can't write."); 
}catch (IOException e) { 
     e.printStackTrace(); 
} 

Mais root.canWrite() semble revenir faux à chaque fois . Je ne suis pas en cours d'exécution d'un émulateur, j'ai mon Android Eris branché sur mon ordinateur via USB et l'application hors de mon téléphone via Eclipse. Existe-t-il un moyen de donner la permission à mon application afin que cela n'arrive pas?

En outre, ce code semble être créer le fichier default.txt mais si elle existe déjà, sera-t ignorer la création et il suffit d'ouvrir pour écrire ou dois-je attraper quelque chose comme FileAlreadyExists (si une telle exception existe) qui puis ouvre juste et écrit?

Merci pour toute aide les gars.

Répondre

17

Y a-t-il un moyen de donner à mon application la permission pour que cela n'arrive pas?

Vous devez obtenir la permission WRITE_EXTERNAL_STORAGE.

La carte SD ne doit pas non plus être montée sur votre ordinateur de développement: l'ordinateur ou le téléphone peut accéder à la carte SD, mais pas aux deux à la fois.

+0

J'unmout le téléphone de l'ordinateur , mais toujours l'erreur, j'ai ajouté l'autorisation ** WRITE_EXTERNAL_STORAGE ** dans le fichier AndroidManifest.xml, merci d'avance. – twlkyao

0

ajouter la permission de WRITE_EXTERNAL_STORAGE à votre fichier manifeste

et s'il est nécessaire ne branchez les éléments suivants

  1. le droïde dans votre ordinateur
  2. déroulez le gestionnaire (la barre sur le dessus avec le temps , désolé, je ne sais pas le nom, je ne peux pas me rappeler maintenant)
  3. hit "usb connected"
  4. fenêtre apparaît sur votre ordinateur vous montrant le contenu de la S Carte D
  5. hit « désactiver le stockage USB » lorsque vous avez terminé
  6. câble USB de déconnexion (si vous voulez), puis votre Droid peut lire la carte SD à nouveau
Questions connexes