Android, как использовать Environment.getExternalStorageDirectory()
Как я могу использовать Environment.getExternalStorageDirectory()
прочитать сохраненное изображение с SD-карты или есть лучший способ сделать это?
3 ответа
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();
Имейте в виду, однако, что getExternalStorageDirectory() не будет работать должным образом на некоторых телефонах, например, на моей Motorola razr maxx, так как он имеет 2 карты / mnt / sdcard и /mnt/sdcard-ext - для внутренней и внешней SD-карт соответственно. Вы будете получать ответ только / mnt / sdcard каждый раз. Google должен предоставить способ справиться с такой ситуацией. Так как многие приложения, поддерживающие SD-карту (например, резервное копирование карты), плохо работают на этих телефонах.
Как описано в документации 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!";
}
Чтобы получить каталог, вы можете использовать приведенный ниже код:
File cacheDir = new File(Environment.getExternalStorageDirectory() + File.separator + "");