Как создать файл в каталоге SDCARD - PullRequest
5 голосов
/ 11 апреля 2011

Я хочу создать файл (не создан) в каталоге (не создан) на SDCARD.Как это сделать?

Спасибо.

Ответы [ 5 ]

22 голосов
/ 11 апреля 2011

Попробуйте следующий пример:

if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
    //handle case of no SDCARD present
} else {
    String dir = Environment.getExternalStorageDirectory()+File.separator+"myDirectory";
    //create folder
    File folder = new File(dir); //folder name
    folder.mkdirs();

    //create file
    File file = new File(dir, "filename.extension");
}

Не забудьте добавить разрешение для вашего AndroidManifest:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3 голосов
/ 16 июля 2011

Проблема в том, что mkdirs () вызывается для объекта File, содержащего полный путь до самого файла.Он должен вызываться для объекта File, содержащего Path (каталог) и только это.Затем вы должны использовать другой объект File для создания фактического файла.

2 голосов
/ 11 апреля 2011

Вам также необходимо добавить разрешение на запись на внешний носитель.Добавьте следующую строку в файл манифеста приложения, где-то между тегами , но не внутри тега :

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

0 голосов
/ 20 июля 2018

Используйте это:

DocumentFile tempDir = DocumentFile.fromSingleUri(context,targetDirectoryUri);
DocumentFile newDocumentFile = tempDir.createFile(type,name);

"targetDirectoryUri" - это URI каталога, в который вы хотите поместить файл.Это единственное решение!После Api 19 вы не можете писать на SDCard, поэтому вы должны использовать DocumentFile вместо File.Кроме того, вы также должны получить разрешение SDCard.Чтобы узнать, как это сделать и получить targetDirectoryUri, прочитайте this .

0 голосов
/ 10 октября 2016

См. здесь , почему создание файлов в корне SD-карты - плохая идея

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...