getExternalFilesDir 和 getExternalStorageDirectory() 之间的区别

2022-08-31 09:54:56

我知道 ExternalFiles 将在 API 8 及更高版本上使用,而 getExternalStorageDirectory 用于 7 及以下版本。但是我在使用之间有点困惑。例如,我想检查是否存在一个文件夹,以前你会使用如下内容:

File ChildFolder = new File(Environment.getExternalStorageDirectory() + "/ParentFolder/Child");

然而,我看到的每个例子都说要使用getExternalFilesDir(null),File.ext。由于我高于API 8,我想使用此方法,但是我如何检查文件夹?我将在另一个时间点检查文件是否存在,但现在只想看看文件夹是否存在??


答案 1
getExternalFilesDir()

它返回SD卡上Android /data/data/your_package//文件文件夹的路径。它用于存储应用程序所需的任何文件(例如,从 Web 或缓存文件下载的图像)。卸载应用程序后,存储在此文件夹中的任何数据也将消失。

getExternalStorageDirectory()

它返回SD卡的根路径(例如mnt/sdcard/)。如果您在此路径上保存数据并卸载应用程序,则该数据不会丢失。


答案 2

首先,我们需要了解内部存储,外部存储(也称为主外部存储)和辅助外部存储之间的区别是什么?

内部存储:用户无法访问的存储,除非通过已安装的应用程序(或通过生根其设备)。示例:数据/数据/app_packageName

主外部存储:在内置的共享存储中,“用户可以通过插入USB电缆并将其作为驱动器安装在主机上来访问”。示例:当我们说Nexus 5 32 GB时。

辅助外部存储:可移动存储。示例:SD 卡。

getExternalFilesDir (String type)

它返回主外部存储上Android/data/data/your_package/中的文件夹的路径。这是内置存储。

Environment.getExternalStorageDirectory()

它将返回辅助外部存储目录的路径