все. Пытаюсь сохранить картинку с android в директорию public pictures на sd-карте. Однако я не могу дойти до открытия файла для записи. Вот код:
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
mExternalStorageWriteable = true;
}
if(mExternalStorageWriteable){
File root_dir = Environment.getExternalStorageDirectory();
root_dir.mkdirs();
File pictures_directory = new File(root_dir, "/Pictures/");
pictures_directory.mkdirs();
File outputfile = new File(pictures_directory, "test_file.jpg");
try {
outputfile.createNewFile();
FileOutputStream out = new FileOutputStream(outputfile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Мой отладчик всегда переходит к блоку catch (вызванному вызовом createNewFile), а сообщение IOExceptions - «Not a Directory». Если я удалю вызов createNewFile, конструктор FileOutPutStream выдаст исключение FileNotFound. Однако открытие потока вывода файлов в корень файловой системы или в каталог изображений, похоже, работает нормально.
Чтобы обойтись без очевидного, мой манифест включает тег ‹uses-permission android: name =" android.permission.WRITE_EXTERNAL_STORAGE "/>. Я использую API уровня 5, и к моему эмулятору подключена виртуальная SD-карта. Любые предложения приветствуются.
РЕШЕНО: возникла проблема с файловой системой эмулятора. DDMS показала, что / Pictures / по какой-то причине создается как файл или каталог. Создание нового эмулятора решило проблему.