我正在尝试访问存储在内部存储中的 2.45GB Geopackage 文件,但每当我尝试访问它时,我都会收到“文件不存在”错误。
gpkg 文件正在通过 DownloadManager 下载到外部存储中,然后再复制到内部存储中,但是当我调用 时new File(getContext().getFilesDir(), "roads.gpkg").exists();
,我得到“假”返回。不仅如此,当我跑步时
File[] files = getContext().getFilesDir().listFiles();
for(File file : files){
Log.i("FILE", file.getAbsolutePath());
}
该文件不显示。
为了确保这不是来自 DownloadManager 或我的复制方法的意外行为,我手动将文件复制到“Android/data/uk.co.alexks.greenroutes/files”,以及一个 11 字节的 txt 文件,'test .txt',使用我的 Windows 笔记本电脑。同样,对于上面的 listFiles() 代码输出,这些文件都没有返回 trueFile.exists()
或显示(见下文)。
这是我尝试访问文件时的完整代码:
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() 来检查文件是否有效,但这在这里没有帮助。
任何帮助将不胜感激!:)