2015-02-27 2 views
3

Я делаю простое приложение на Android и в определенной части приложения, я хотел бы создать файл Excel и написать в нем. Я уже подготовил все, чтобы использовать библиотеку jexcel для редактирования excel с использованием Java, но дело в том, что я не могу найти файл Excel, который я создал. Я попытался найти его на своем собственном устройстве, выполняющем приложение, но не смог.Каков путь "getApplicationContext(). GetFilesDir()" return?

String fileName = "hours.xls"; 
File file = new File(getApplicationContext().getFilesDir() + fileName); 

Может ли кто-нибудь помочь мне, пожалуйста?

Заранее спасибо :)

+0

Обратите внимание, что 'getApplicationContext()' бесполезно здесь - вы можете просто позвонить 'getFilesDIr()'. Кроме того, не используйте конкатенацию для создания имен файлов. Используйте 'new File (getFilesDir(), fileName)'. – CommonsWare

+0

Исключительно. Выполнение этого (getFilesDir() + имя_файла) объединяет конечное имя папки с именем файла, подобным этому (предполагается, что fileName = "myfile.xls"): .../com.mysociety.myapp/filesmyfile.xls вместо. ../files/myfile.xls –

ответ

5

На Android KitKat, она возвращает /data/data/{your package name}/files, однако я полагаю, это может измениться в зависимости от вашей версии платформы. Таким образом, если вы просто пытаетесь перекопать свою файловую систему и видите файл, безопасно использовать этот путь, но если вы используете этот путь для некоторых функций в нескольких версиях платформы, вы должны ссылаться только на него, используя getFilesDir().

+0

Хотя путь, который вы указали, был правильным с Android 1.0, он верен только для основной учетной записи пользователя. На планшетах Android 4.2+ и на телефонах Android 5.0+ основной пользователь может настроить дополнительные учетные записи. Если приложение запускается одной из этих учетных записей, 'getFilesDir()' возвращает ... что-то еще. Мне нужно будет записать его, чтобы запомнить точную структуру пути. – CommonsWare

+0

Изменен ли путь к каталогу для Lollipop, Marshmallow и Nougat? –

2

Для чего вы планируете использовать этот файл? Вы хотите, чтобы его использовали другие приложения? Использование getApplicationContext().getFilesDir() даст вам /data/data/com.package/files, но если вы хотите файл, который легко доступна сами и другие приложения, вы лучше использовать что-то вроде getExternalFilesDir()

0

Прочитайте документацию, этот метод считывает файлы, хранящиеся во внутренней памяти, которые были создано с с openFileOutput():

getFilesDir()

Возвращает абсолютный путь к каталогу в файловой системе, где файлы, созданные с открытыми FileOutput (String, int) сохраняются.

0

Если вы хотите получить доступ к файлу через ваш компьютер (с USB-кабелем) или через файловый менеджер на вашем устройстве, предпочитают:

new File(getExternalFilesDir(null), fileName); 

Эта папка создается в .../Android/data/... com.yoursociety.yourapp/files ...

null означает, что вы не хотите хранить файлы в предопределенных папках, таких как фильмы, картинки и т. д.

(см documentation для получения дополнительной информации)

Смежные вопросы