2010-11-26 33 views
2

if(new File("/mnt/sdcard/t.m").exists()) {...}android File.exists ne parvient pas à vérifier un fichier sur la carte SD

Lorsque je crée un programme java en utilisant Eclipse et debug sur mon téléphone Android, il teste à droite. Mais quand je l'ai mis en application dans mon système Android, il ne détecte pas le fichier.

Et, dans une autre application (construit dans mon système Android, aussi), mais je l'ai mis à la suite AndroidManifest.xml,

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

le code ci-dessous fait une exception à dire non l'autorisation,

File f=new File("/mnt/sdcard/a.t"); f.createNewFile();

Merci. Je suis nouveau sur Android.

Répondre

1

dans Permission to write to the SD card:

Vous avez raison que le répertoire carte SD est /sdcard mais vous ne devriez pas être difficile coder. Au lieu de cela, faire un appel à Environment.getExternalStorageDirectory() pour obtenir le répertoire:

fichier sdDir = Environment.getExternalStorageDirectory(); Si vous ne l'avez pas déjà fait, vous devrez vous donner application que l'autorisation correcte d'écrire sur la carte SD par ajoutant ceci à votre Manifest:

<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
    /> 

changer juste pour lire (au lieu d'écrire)

+0

J'avais essayé tout votre code. Ne fonctionne pas le fichier peut être listé par shell adb, donc le codage dur ne peut pas le rendre incorrect. – A117

+0

Je suis désolé, j'étais pressé et je n'ai pas lu correctement! Allez ici et vérifiez l'état du stockage: http://developer.android.com/guide/topics/data/data-storage.html#filesExternal –

+0

Environment.MEDIA_MOUNTED.equals (Environment.getExternalStorageState()) et j'ai vérifié ce. Le petit programme d'essais a vérifié. Le problème est la différence entre mon plus gros programme par "make" et le plus petit programme par Eclipse. – A117