Android获取存储路径

Android Q(Android 10)之前,需要添加权限,如下:

Android Q(Android 10)开始 在App专属目录下本App可以随意操作,无需申请权限,不过App专属目录会在App卸载时跟随删除。看下面几个目录(通过Applicationcontext就可以访问)。

  • getFilesDir() :/data/user/0/本应用包名/files
  • getCacheDir():/data/user/0/本应用包名/cache
  • getExternalFilesDir(null):/storage/emulated/0/Android/data/本应用包名/files
  • getExternalCacheDir():/storage/emulated/0/Android/data/本应用包名/cache

getFilesDirgetCacheDir是在手机自带的一块存储区域(internal storage),通常比较小,SD卡取出也不会影响到,Appsqlite数据库和SharedPreferences都存储在这里。所以这里应该存放特别私密重要的东西。

getExternalFilesDirgetExternalCacheDir是在SD卡下(external storage),在sdcard/Android/data/包名/filessdcard/Android/data/包名/cache下,会跟随App卸载被删除。

filescache下的区别是,在手机设置-找到本应用-在存储中,点击清除缓存,cache下的文件会被删除,files下的文件不会。

谷歌推荐使用getExternalFilesDir。我们项目的下载是个本地功能,下载完成后是存本地数据库的,不是放网络上的,所以下载的音视频都放到了这下面,项目卸载时跟随App都删除了。getExternalFilesDir方法需要传入一个参数,传入null时得到就是sdcard/Android/data/包名/files,传入其他字符串比如"Picture"得到sdcard/Android/data/包名/files/Picture

参考代码如下:

参考链接

发布者

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注