Я пытаюсь получить доступ к файлу Geopackage объемом 2,45 ГБ, который хранится во внутренней памяти, но всякий раз, когда я пытаюсь получить к нему доступ, я получаю сообщение об ошибке «Файл не существует».
Файл gpkg загружается через DownloadManager во внешнее хранилище перед копированием во внутреннее хранилище, но когда я вызываю new File(getContext().getFilesDir(), "roads.gpkg").exists();
, возвращается «false». Кроме того, при запуске
File[] files = getContext().getFilesDir().listFiles();
for(File file : files){
Log.i("FILE", file.getAbsolutePath());
}
файл не отображается.
Чтобы убедиться, что это не было неожиданным поведением в DownloadManager или в моем методе копирования, я вручную скопировал файл в «Android / data / uk.co.alexks.greenroutes / files», а также в 11-байтовый текстовый файл «test.txt», используя мой Windows ноутбук. Опять же, ни один из этих файлов не возвращает true для File.exists()
или не отображается в приведенном выше выводе кода listFiles () (см. Ниже).
Вот полный код того, когда я пытаюсь получить доступ к файлу:
File geopackage = new File(getContext().getFilesDir(), "roads.gpkg");
Log.i("GEOPACKAGE", String.format("GPKG File: %s", geopackage.getPath()));
Log.i("GEOPACKAGE", String.format("Exists? %s", geopackage.exists()?"T":"F"));
Log.i("FILE", getContext().getFilesDir().getPath());
File[] files = getContext().getFilesDir().listFiles();
for(File file : files){
Log.i("FILE", file.getAbsolutePath());
}
//Pass geopackage to a new object that uses the Geopackage-Android library to handle it.
Вот вывод Logcat:
I/GEOPACKAGE: GPKG File: /data/user/0/uk.co.alexks.greenroutes/files/roads.gpkg
I/GEOPACKAGE: Exists? F
I/FILE: /data/user/0/uk.co.alexks.greenroutes/files
/data/user/0/uk.co.alexks.greenroutes/files/DATA_disk_creation_time_its
/data/user/0/uk.co.alexks.greenroutes/files/DATA_disk_creation_time_vts_labl_uk.co.alexks.greenroutes_default
/data/user/0/uk.co.alexks.greenroutes/files/DATA_disk_creation_time_vts_no_pois_uk.co.alexks.greenroutes_default
/data/user/0/uk.co.alexks.greenroutes/files/DATA_disk_creation_time_vts_uk.co.alexks.greenroutes_default
/data/user/0/uk.co.alexks.greenroutes/files/DATA_disk_creation_time_vts_inaka_uk.co.alexks.greenroutes_default
/data/user/0/uk.co.alexks.greenroutes/files/DATA_disk_creation_time_its_ter
/data/user/0/uk.co.alexks.greenroutes/files/com.google.android.gms.maps._m_u
/data/user/0/uk.co.alexks.greenroutes/files/_m_t
I/FILE: /data/user/0/uk.co.alexks.greenroutes/files/DATA_ServerControlledParametersManager.data.uk.co.alexks.greenroutes
/data/user/0/uk.co.alexks.greenroutes/files/ZoomTables.data
И ожидаемый вывод:
I/GEOPACKAGE: GPKG File: /data/user/0/uk.co.alexks.greenroutes/files/roads.gpkg
I/GEOPACKAGE: Exists? T
I/FILE: /data/user/0/uk.co.alexks.greenroutes/files
/data/user/0/uk.co.alexks.greenroutes/files/roads.gpkg
/data/user/0/uk.co.alexks.greenroutes/files/test.txt
И мой Android манифест с разрешениями:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Для чего это стоит, я знаю, что должен использовать File.isFile (), чтобы проверить, является ли файл действительным, но это не поможет.
Любая помощь будет принята с благодарностью! :)