Android 上的 getDir 和 getFilesDir 有啥区别?

Posted

技术标签:

【中文标题】Android 上的 getDir 和 getFilesDir 有啥区别?【英文标题】:What is the difference between getDir and getFilesDir on Android?Android 上的 getDir 和 getFilesDir 有什么区别? 【发布时间】:2012-07-31 15:33:54 【问题描述】:

我想在我的应用程序的内部存储中保存一张图片,以使其不公开。所以我做了一些研究,看到了两种获取目录的方法。

1.与getDir:

File dir = getDir(Environment.DIRECTORY_PICTURES, Context.MODE_PRIVATE);

2.与getFilesDir:

File dir = getFilesDir();

哪个最好?哪个返回内部存储中的位置?

写入文件的方式取决于您获取目录的方式?我有点迷茫,因为在 android 中写入文件的方法有很多。

【问题讨论】:

【参考方案1】:

getFilesDir() 将 File 对象返回到仅对您的应用程序私有的目录。当您使用openFileOutput(String, int)时,您写入的数据直接存储在此目录中,其他任何应用程序都无法访问。它保存您的应用程序文件。

getDir() 使您可以在内部存储器中创建任何文件或目录,其他应用程序也可以根据您创建它的模式访问这些文件或目录。 openFileOutput(String, int) 将无法与此输出一起使用,因此您将不得不使用其他写入和读取文件的方式来处理此目录或文件。这更多用于创建自定义文件,而不是仅由您的应用程序使用的文件。

【讨论】:

谢谢! File dir = getDir(Environment.DIRECTORY_PICTURES, Context.MODE_PRIVATE); 会在内存中给我一个File(因为MODE_PRIVATE)吗? 不客气。 MODE_PRIVATE 是 getDir 的默认常量,它表示您的文件/目录将是您的应用程序私有的。 getDir 将始终返回/创建一个内部目录。请注意 DIRECTORY_PICTURES 适用于 API 8 及更高版本。 @Erol 所以我可以得出结论,MODE_PRIVATE 的 getDir 在某种程度上与 getFilesDir 相同...?

以上是关于Android 上的 getDir 和 getFilesDir 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Android SDK Webview加载不在资产文件夹中的本地文件

Java反射反射与注解

Android webview html5地理定位

各种获取路径

android通过webview访问通过Html5定位的web页面无法获取到经纬度

androidAndroid 获取系统各个目录