Android Get Application - домашний каталог данных - PullRequest
49 голосов
/ 19 января 2011

Простой вопрос, относящийся к стандартному «домашнему» каталогу, когда приложение выполняет запись во внутреннюю память.По умолчанию все созданные файлы помещаются ОС (2.2) в:

/data/data/your.package/files

При чтении в файлах используется то же значение по умолчанию, при условии сохранения в правильном контексте через openFileInput(), openFileOutput().Но если мне нужно проверить существование файла, например, используя класс File, мне нужно указать весь путь в конструкторе.

Я вижу, что есть Environment.getDataDirectory() (возвращает /data), Environment.getRootDirectory() (возвращает /system) и т. д., но ничего не связано с получением «домашнего» каталога приложения.

Это не так уж сложно, но я бы не стал жестко указывать полный путь в моем приложении дляИспользуемый файл (скажем, имя пакета меняется, например, путь меняется в будущем выпуске ОС), если есть какой-то способ программной ссылки на домашний каталог приложения.

Ответы [ 3 ]

93 голосов
/ 19 января 2011

Конечно, никогда не подведет. Нашел решение примерно через минуту после публикации вышеуказанного вопроса ... решение для тех, у кого, возможно, была такая же проблема:

ContextWrapper.getFilesDir()

Найдено здесь .

35 голосов
/ 09 октября 2012

Вы можете попробовать Context.getApplicationInfo().dataDir, если вам нужна папка постоянных данных пакета.

getFilesDir() возвращает корень этого.

14 голосов
/ 12 сентября 2013

Получить путь к файлу в пакете приложения;

ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();
...