我正在尝试访问一个2.45 am的Geopackage文件,该文件存储在内部存储器中,但每当我尝试访问它时,我都会收到一个“文件不存在”的错误。
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或my copy方法不会出现意外行为,我使用Windows笔记本电脑手动将该文件和一个11字节的txt文件'test.txt‘复制到test.txt中。同样,对于File.exists(),这些文件都不会返回true,也不会在上面的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()来检查一个文件是否有效,但这在这里没有帮助。
任何帮助都将不胜感激!:)
发布于 2020-04-26 22:30:48
好吧,事实证明这个文件确实不存在于内部存储中(我想我卸载了应用程序来测试权限请求,但我在" Android/data/package/files /“(外部存储)中看到了数据集的副本,所以认为它确实存在),正如@CommonWares在评论中指出的那样,可以从Windows访问的Android/data/package/ files文件夹不是内部存储,它是外部的,所以复制文件到那里没有任何作用。
https://stackoverflow.com/questions/61441980
复制相似问题