2016-02-28 2 views
0

Я пытаюсь создать папку, а затем после этого выполнить некоторые операции ввода-вывода файлов! Я использую sony Xperia Z, чтобы проверить это! Я знаю, что сейчас я жестко закодировал местоположение, но он не позволяет мне создавать папки!Доступ к SD CARD и выполнение операций с файлами IO

File appPath = new File("/storage/sdcard1/folder"); 
     if (!appPath.exists()) { 
      appPath.mkdirs(); 
} 

Я использую targetSdkVersion от 22 И имея леденец на моем телефоне. Я попытался

appPath.mkDir(); 

как хорошо, но все это дает значение false. И я добавил разрешения проявлять

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

И я попробовал много различных открытым исходным кодом менеджер файлов, но ни один не в состоянии создавать папки, но ES файловый менеджер способен создавать папки и делать файлов операций ввода-вывода!

+0

Дубликат http://stackoverflow.com/questions/35109307/mkdir-works-while-inside-internal-flash-storage-but-not-sd-card –

+0

Проверьте возвращаемое значение mkdirs() и не выполняйте продолжайте, если ложь, но покажите тост, говорящий так. – greenapps

+0

Lollipop не позволяет вам записывать на карту micro sd. – greenapps

ответ

0

Не кодируйте глобальные пути, например /sdcard, используйте вместо этого Environment.getExternalStorageDirectory() и связанные с ними методы. Вот рабочий образец.

public static String getNewFolderPath() { 
     File folder = new File(Environment.getExternalStorageDirectory() 
       .toString() + File.separator + "folder"); 
     if (!folder.exists()) 
      folder.mkdirs(); 
     return folder.getAbsolutePath(); 
    } 

EDIT: Для получения дополнительной информации проверки:

Надеется, что это помогает!

+0

getExternalStorageDirectory дает/storage/emulated/0, который является внутренним хранилищем в моем телефоне! Кстати, проблема не в жестком кодировании, проблема в том, что я не могу писать на SD-карте! – Kunal

+0

Да, я понимаю, но 'Environment.getExternalStorageDirectory()' для получения пути к SD-карте, я отредактировал свой ответ с некоторыми ссылками, которые объяснят вам, вашу фактическую проблему. Удачи :) –

+1

№ getExternalStorageDirectory() предназначен для получения доступа к внешнему хранилищу. И в большинстве устройств это не путь к съемной карте micro SD. – greenapps

Смежные вопросы