在Android系统中使用文件时,我们应该使用File
getPath
还是getAbsolutePath
?
例如,我们下载了文件,然后使用DownloadManager.addCompletedDownload()
将此文件添加到全局downloads
文件夹中,以便在那里可用,我们应该传递哪个path
?
当我们在File
或context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS).getPath()
的{{1}}文件夹内创建getPath
时的另一个示例吗?
最后一个例子是我们使用getAbsolutePath
答案 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)
会更合适。