getExternalFilesDir和getExternalStorageDirectory()之间的差异
据我所知,ExternalFiles将在API 8上使用,而getExternalStorageDirectory则是在7以下。 不过我在使用之间有点混淆。 例如,我想检查一个存在的文件夹,以前您会使用类似于:
File ChildFolder = new File(Environment.getExternalStorageDirectory() + "/ParentFolder/Child");
不过,我看到每个示例都使用getExternalFilesDir(null),File.ext。 由于我在API 8以上,我想使用这种方法,但我怎么才能检查文件夹? 我会检查文件存在的另一点,但现在只想看看文件夹是否存在?
TIA JB
getExternalFilesDir()
它返回到您的SD卡上的Android / data / data / your_package /内的文件夹的path。 它用于存储您的应用程序所需的任何文件(例如,从网页或caching文件下载的图像)。 一旦应用程序被卸载,任何存储在这个文件夹中的数据也没有了。
getExternalStorageDirectory()
它将根path返回到您的SD卡(例如mnt / sdcard / )。 如果您将数据保存在此path上并卸载该应用程序,则该数据不会丢失。
首先,我们需要了解内部存储,外部存储(也称为主外部存储)和辅助外部存储之间的区别。
内部存储:用户无法访问的存储,除非是通过已安装的应用程序(或通过对其设备进行生根)。 例如:data / data / app_packageName
主外部存储器:内置共享存储器,“用户可以通过插入USB电缆将其作为驱动器安装到主机上”。 例如:当我们说Nexus 5 32 GB时。
辅助外部存储:可移动存储。 例如:SD卡。
getExternalFilesDir (String type)
它将path返回到主要外部存储上的Android / data / data / your_package /内的文件夹。 这是内置存储。
getExternalStorageDirectory ()
它将返回主外部存储目录的path
! 重要更新! 谁遇到这个问题。
由于这是一个有点老问题,只是想提供一些额外的信息。 由于KitKat甚至具有WRITE_EXTERNAL_STORAGE权限的应用程序只允许在外部存储器上写入Android / data / data / your_package / aka getExternalFilesDir()
如果您尝试写入getExternalStorageDirectory() + "/somefolder/anotherfolder/"
您将在大多数设备上收到SecurityException
- 无法解决:com.android.support:appcompat-v7:26.0.0
- Android Studio:您必须指定Genymotion文件夹的path才能使用此function
- Android Studio – 项目中的所有文件名都是红色的,但没有错误
- Android SDKpipe理器没有获取其他SDK平台
- 从其他应用程序启动Facebook应用程序
- 如何在Android Studio中清除最近的项目列表?
- 无法加载模块描述符类:未find类“com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor”
- 我在哪里可以放置在Android Studio中的“资产”文件夹?
- 升级到Google Play服务:9.0.0错误无法解决:com.google.android.gms:play-services-measurement:9.0.0