Android, как использовать Environment.getExternalStorageDirectory () - PullRequest
50 голосов
/ 28 марта 2011

Как я могу использовать Environment.getExternalStorageDirectory() для чтения сохраненного изображения с SD-карты или есть лучший способ сделать это?

Ответы [ 3 ]

79 голосов
/ 28 марта 2011
Environment.getExternalStorageDirectory().getAbsolutePath()

Дает вам полный путь SDCard.Затем вы можете выполнять обычные операции ввода-вывода файлов, используя стандартную Java.

Вот простой пример написания файла:

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

Редактировать:

Упс - вы хотелипример для чтения ...

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();
36 голосов
/ 23 июля 2012

Имейте в виду, однако, что getExternalStorageDirectory () не будет работать должным образом на некоторых телефонах, например, на моей Motorola razr maxx, так как он имеет 2 карты / mnt / sdcard и / mnt / sdcard-ext -для внутренних и внешних SD-карт с уважением.Вы будете получать ответ только / mnt / sdcard каждый раз.Google должен предоставить способ справиться с такой ситуацией.Так как на этих телефонах происходит сбой многих приложений, поддерживающих SD-карты (т. Е. Резервное копирование карт).

0 голосов
/ 02 декабря 2016

Как описано в документации Environment.getExternalStorageDirectory () :

Environment.getExternalStorageDirectory () Возвратить основной общий /каталог внешнего хранилища.

Это пример того, как использовать его для чтения изображения:

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!";
         }
...