web-dev-qa-db-fra.com

Android comment utiliser Environment.getExternalStorageDirectory ()

Comment utiliser Environment.getExternalStorageDirectory() pour lire une image enregistrée sur la carte SD ou existe-t-il un meilleur moyen de le faire?

49
Moe
Environment.getExternalStorageDirectory().getAbsolutePath()

Vous donne le chemin complet de la carte SD. Vous pouvez ensuite effectuer des opérations d'E/S sur fichiers normales à l'aide de Java standard.

Voici un exemple simple pour écrire un fichier:

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";

// Not sure if the / is on the path or not
File f = new File(baseDir + File.separator + fileName);
f.write(...);
f.flush();
f.close();

Modifier:

Oups - vous vouliez un exemple de lecture ...

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";

// Not sure if the / is on the path or not
File f = new File(baseDir + File.Separator + fileName);
FileInputStream fiStream = new FileInputStream(f);

byte[] bytes;

// You might not get the whole file, lookup File I/O examples for Java
fiStream.read(bytes); 
fiStream.close();
78
debracey

Sachez cependant que getExternalStorageDirectory () ne fonctionnera pas correctement sur certains téléphones, par ex. mon Motorola razr maxx, car il a 2 cartes/mnt/sdcard et/mnt/sdcard-ext - pour les cartes SD internes et externes respectueusement. Vous obtiendrez uniquement la réponse de/mnt/sdcard à chaque fois. Google doit fournir un moyen de faire face à une telle situation. Comme il rend beaucoup d'applications prenant en charge la carte SD (i.e card backup) échouant misérablement sur ces téléphones.

35
halxinate

Comme décrit dans la documentation Environment.getExternalStorageDirectory () :

Environment.getExternalStorageDirectory () Retourne le primaire répertoire de stockage partagé/externe.

Voici un exemple d'utilisation de la lecture d'une image:

String fileName = "stored_image.jpg";
 String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
 String pathDir = baseDir + "/Android/data/com.mypackage.myapplication/";

 File f = new File(pathDir + File.separator + fileName);

        if(f.exists()){
          Log.d("Application", "The file " + file.getName() + " exists!";
         }else{
          Log.d("Application", "The file no longer exists!";
         }
0
Elenasys