我们应该在Android中使用getPath还是getAbsolutePath

时间:2020-06-16 17:42:02

标签: android android-10.0 scoped-storage

在Android系统中使用文件时,我们应该使用File getPath还是getAbsolutePath

例如,我们下载了文件,然后使用DownloadManager.addCompletedDownload()将此文件添加到全局downloads文件夹中,以便在那里可用,我们应该传递哪个path

当我们在Filecontext.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getPath()的{​​{1}}文件夹内创建getPath时的另一个示例吗?

最后一个例子是我们使用getAbsolutePath

2 个答案:

答案 0 :(得分:2)

根据DOCS

path:字符串:文件的绝对路径名。

所以,我想您应该通过绝对路径。但是请注意,DownloadManager.addCompletedDownload()在Android Q上已被弃用

在Android Q上,他们引入了范围存储概念,这对您访问文件的方式产生了巨大影响。我认为您可以从HERE

获取更多信息

因此,我强烈建议您在实施中测试并考虑使用Android Q设备。

答案 1 :(得分:1)

在Android上,一种常见的做法是不依赖System.getProperty("user.dir")。无论如何,当 zigote 启动您的应用程序时,该应用程序设置为/,并且只有一个文件系统,因此,出于所有实际目的,File.getPath()和{{1 }}会产生相同的结果。

但是,如果您要寻找样式点,则当您的流程与其他流程(包括系统服务)进行通信时,应该使用绝对路径。因此,与 DownloadManager MediaScanner 进行交谈,您最好使用File.getAbsolutePath()表达您的意图。另一方面,对于应用内文件路径,例如getAbsolutePath()来查找和读取文件,getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)会更合适。