#android #directory
#Android #каталог
Вопрос:
Я хочу создать каталог на SD-карте, сохранив его как отдельное действие в одном из моих приложений. Я написал следующий код в onCreate () приложения. Это не создает каталог, хотя этот код отлично работает, если я попытаюсь реализовать его как независимое приложение. Пожалуйста, предложите решение этой проблемы.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try{
String dirName = "/sdcard/TEST";
File newFile = new File(dirName);
newFile.mkdirs();
Log.d("CaptureTest.java","Directory created");
if(newFile.exists()){
Log.d("capturetest.java","directory exists");
if(newFile.isDirectory()){
Log.d("capturetest.java","isDirectory = true");
}
else Log.d("capturetest.java","isDirectory = false");
} else
{
Log.d("capturetest.java","directory doesn't exist");
}
} catch(Exception e){
Log.d("capturetest.java","Exception creating folder " e);
}
........................................
..........................................
}
Ответ №1:
SD-карта может быть смонтирована в /mnt/sdcard
вместо /sdcard
. Но самый безопасный способ получить каталог внешнего хранилища, как в следующем коде
File myDirectory = new File(Environment.getExternalStorageDirectory(), "my directory");
if(!myDirectory.exists()) {
myDirectory.mkdirs();
}
Комментарии:
1. Это зависит от обстоятельств. На некоторых устройствах это так
/sdcard
, на других — нет/mnt/sdcard
. Но предложенный вами метод работает во всех случаях.2. о, хорошо, я никогда не видел этого на
/sdcard
себе. Спасибо за подсказку.3. Спасибо за предложение. Я попытался с помощью File MyDirectory = new File (Environment.getExternalStorageDirectory(), «мой каталог»); Но приложение по-прежнему не может создать каталог на SD-карте. В то время как, когда тот же фрагмент кода реализуется как независимое приложение (которое просто создает каталог), оно успешно создает его. Это действительно озадачивающая ситуация. Пожалуйста, поделитесь своим пониманием.
4. Да, я получаю ту же проблему, этот код, похоже, не работает, и у меня тоже есть завивка. <использует-разрешение android:name=»android.permission. WRITE_EXTERNAL_STORAGE» />
Ответ №2:
Причиной этого может быть ряд причин:
- Убедитесь, что внешнее хранилище доступно и доступно для записи, прежде чем пытаться выполнить запись в него.
- Не используйте String dirName = «/sdcard/TEST»; используйте Environment.getExternalStorageDirectory() или Context.getExternalFilesDir() вместо этого.
На этой странице есть несколько действительно полезных советов по правильному доступу к SD-карте.
Комментарии:
1. Я могу создать каталог (вручную) на SD-карте с помощью ASTRO. Таким образом, это означает, что внешнее хранилище доступно и доступно для записи?