getFilesDir()vs Environment.getDataDirectory()

Ela*_*da2 33 android

我想用Environment变量替换一个上下文方法.
但不确定它们是否意味着相同.

有什么区别

getFilesDir()Environment.getDataDirectory()

我如何data\datadata\data\com.Myapp使用中获得Environment Variable

GrI*_*sHu 39

这里这里

public File getFilesDir()

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

public static File getExternalStorageDirectory()

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

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

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

如果你想让你的应用程序路径使用getFilesDir(),它将为你提供路径 /data/data/your package/files

您可以使用获得的路径Environment您的VAR data/package使用

getExternalFilesDir(Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath(); 它将从外部存储的根目录返回路径 /storage/sdcard/Android/data/your pacakge/files/data

要访问外部资源,您必须提供清单中WRITE_EXTERNAL_STORAGE和的权限READ_EXTERNAL_STORAGE.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

查看最佳文档以获取direcorty的路径

  • 试试这种方式`Environment.getDataDirectory().getAbsolutePath()).getAbsolutePath()` (2认同)

Ada*_*ski 13

Enironment返回用户数据目录.并且getFilesDir返回应用程序数据目录.