android getFilesDir()与getExternalFilesDir(),哪个更值得推荐?

3df52oht  于 2023-01-24  发布在  Android
关注(0)|答案(3)|浏览(193)

据我所知,使用getFilesDir()来存储数据(在我的例子中是相机捕获的)有点临时性,我说有点临时性是因为如果我关闭并重新打开应用程序,我可以访问目录和文件列表,但不能访问文件本身。
是我的逻辑错误还是故意的?在2种方法中,哪一种更值得推荐:
1.一般
1.我的案例(需要隐私)

jfewjypa

jfewjypa1#

简单地说,**getFilesDir()**指的是应用程序外部无法访问的内部存储,也不能被设备探测。
getExternalFilesDir()引用外部存储,它是一种应用程序特定的存储。这可以是explorable,因为您在中找到它的目录

数据/数据/您的包名称

一般来说,您可以使用外部存储,因为内部存储可能有限。
出于隐私考虑,如果您需要文件安全性,请使用getFilesDir(),因为正如我前面提到的,在应用程序之外无法访问它。

jjjwad0x

jjjwad0x2#

两者之间的主要区别是:getFilesDir()-此路径将对用户隐藏。这是更安全的方法。getExternalFilesDir()-用户可访问。
收到了关于这一点的良好文档,其中提供了明确的理解:http://androidvogella.blogspot.com/2015/12/getfilesdir-vs-getexternalfilesdir-vs.html

uujelgoq

uujelgoq3#

针对最新Android(当前为Android 13)的更新

在过去,getFilesDir()用来表示内部存储,getExternalFilesDir()用来表示任何插入的东西(通常是SD卡)。
如今的手机没有SD卡插槽,所以它通过抓取一片内部存储来模拟外部存储。因此,历史上的差异--内部存储更快更小,外部存储更慢更大--基本上已经不再存在。
在这两种情况下,应用都会获得scoped存储空间,即它们无需权限即可访问的目录,而其他任何应用都无法访问该目录(请参见下文)。自Android 10以来一直如此(但仅在Android 11中强制执行)。
存储在getFilesDir()getExternalFilesDir()下的文件将在应用卸载时被删除,但在卸载之前将一直存在。(如果您发现文件在卸载之前消失,则您有不同的问题。我建议将您的代码放在单独的问题中发布)。
内部存储和外部存储之间唯一的主要区别是,应用程序 * 可以 * 获得对整个外部存储的读写权限,包括不属于它的文件,所以不要将外部存储用于需要对应用程序保密的文件。
本文中的更多信息:https://medium.com/@tdcolvin/demystifying-internal-vs-external-storage-in-modern-android-c9c31cb8eeec

相关问题