Сохранение данных на внешнем хранилище - PullRequest
8 голосов
/ 07 августа 2011

Я хочу сохранить некоторые данные во внешнем каталоге пользователя (например, на SD-карте), но, похоже, возникла странная проблема. Я использую Environment.getExternalStorageDirectory(), который возвращает «mnt / sdcard /» (что нормально). Я хочу создать две папки в этом каталоге, поэтому я делаю:

File main = new File(getExternalStorageDirectory() + "/my_app/some_data");
if(!main.isDirectory())
    main.mkdirs();

Теперь я думал, что это сделает каталог "mnt / sdcard / my_app / some_data", но после использования файлового менеджера для просмотра SD-карты, получается, что эта папка создается в "mnt / sdcard / my_app / mnt / sdcard / my_app / some_data ", что довольно странно. Может кто-нибудь сказать мне, как это исправить?

1 Ответ

10 голосов
/ 07 августа 2011

Попробуйте следующее и посмотрите, что вы получите ...

String packageName =  this.getPackageName();
File myFilesDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator  + "Android" + File.separator + "data" + File.separator + packageName + File.separator + "files");
myFilesDir.mkdirs();

Это именно то, что я использую для создания рабочего каталога на SD-карте. Для меня это создает ...

/mnt/sdcard/Android/data/com.mycompany.myApp/files

... где 'com.mycompany.myApp' - это фактическое имя пакета моего приложения.

...