getFilesDir()vs Environment.getDataDirectory()

时间:2014-01-20 09:44:09

标签: android

我想用环境变量替换一个上下文方法 但不确定它们是否意思相同。

之间有什么区别

getFilesDir()Environment.getDataDirectory()

如何使用data\datadata\data\com.Myapp获取Environment Variable

4 个答案:

答案 0 :(得分:36)

来自HEREHERE

公共文件getFilesDir()

返回文件系统上存储用openFileOutput(String, int)创建的文件的目录的绝对路径。

public static File getExternalStorageDirectory()

返回主外部存储目录。如果用户已在其计算机上安装此目录,已从设备中删除或发生其他一些问题,则该目录当前可能无法访问。您可以使用getExternalStorageState()确定其当前状态。

  

注意:不要在这里混淆“外部”这个词。此目录最好被视为媒体/共享存储。它是一个文件系统,可以容纳相对大量的数据,并在所有应用程序之间共享(不强制执行权限)。传统上这是一张SD卡,但它也可以作为内置存储器实现,该设备不同于受保护的内部存储器,可以作为文件系统安装在计算机上。

在具有多个用户的设备上(如UserManager所述),每个用户都有自己独立的外部存储。应用程序只能访问正在运行的用户的外部存储。

如果您想要使用getFilesDir()获取应用程序路径,则会为您提供路径/data/data/your package/files

您可以使用

使用Environment的{​​{1}} var来获取路径

data/package将从外部存储的根目录返回路径 getExternalFilesDir(Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath();

要访问外部资源,您必须在清单中提供/storage/sdcard/Android/data/your pacakge/files/dataWRITE_EXTERNAL_STORAGE的权限。

READ_EXTERNAL_STORAGE

查看Best Documentation to get the paths of direcorty

答案 1 :(得分:12)

Enironment返回用户数据目录。 getFilesDir会返回应用程序数据目录。

答案 2 :(得分:0)

<强> getFilesDir()

返回文件系统上目录的绝对路径,其中存储使用openFileOutput(String,int)创建的文件。

<强> Environment.getDataDirectory()

返回用户数据目录。

答案 3 :(得分:-1)

试试这个

getExternalFilesDir(Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath()