Как создать каталог на SD-карте внутри приложения

#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:

Причиной этого может быть ряд причин:

  1. Убедитесь, что внешнее хранилище доступно и доступно для записи, прежде чем пытаться выполнить запись в него.
  2. Не используйте String dirName = «/sdcard/TEST»; используйте Environment.getExternalStorageDirectory() или Context.getExternalFilesDir() вместо этого.

На этой странице есть несколько действительно полезных советов по правильному доступу к SD-карте.

Комментарии:

1. Я могу создать каталог (вручную) на SD-карте с помощью ASTRO. Таким образом, это означает, что внешнее хранилище доступно и доступно для записи?