android 根目录缓存,Android系统中内部存储和外部存储(公有目录、私有目录、缓存目录)详解...

首先,明确一个概念,Android内部存储和外部存储并非所谓的手机自带内存是内部存储,SD卡是外部存储云云。

Android对内部存储和外部存储不是在物理上区分的,而是在逻辑上区分的。git

1、概念web

内部存储是指系统内部存储空间,在逻辑上用目录来区分的话就是data目录下的文件夹

除此以外data目录下有app目录存放系统下载的apk信息,有data目录存放各类文件

例如:

sharedPreferenced存储的文件在 /data/data//shared_prefs/目录下。

Sqlite存储的文件在 /data/data//database/目录下。缓存

外部存储就简单多了

一、手机厂商自带存储,也就是常说的 16GB、64GB等

二、SD卡

这些都是外部存储app

2、获取可操做内部存储目录(随着用户删除app而删除)ide

getCacheDir().getPath():内部缓存目录

/data/user/0/packname/cache/ //7.0以上

/data/data/packname/cache/

getFilesDir().getPath():内部文件目录

/data/user/0/packname/files/

/data/data/packname/files/

shared_prefs和database两个文件夹有sharedPreferenced和Sqlite这些专门工具去操做。svg

注:data/data/…和data/user/0/… 区别是后者区分用户,不过这不重要工具

3、获取可操做外部存储目录code

外部存储分为外部公共目录、外部私有目录、缓存目录:视频

一、外部九大公共目录:xml

Environment.getExternalStoragePublicDirectory(context,type);

/storage/emulate/0/....

有九种type,分别对应不一样的目录,以下

DIRECTORY_MUSIC:音乐类型 /storage/emulate/0/music

DIRECTORY_PICTURES:图片类型

DIRECTORY_MOVIES:电影类型

DIRECTORY_DCIM:照片类型,相机拍摄的照片视频都在这个目录(digital camera in memory)

DIRECTORY_DOWNLOADS:下载文件类型 /storage/emulate/0/downloads

DIRECTORY_DOCUMENTS:文档类型

DIRECTORY_RINGTONES:铃声类型

DIRECTORY_ALARMS:闹钟提示音类型

DIRECTORY_NOTIFICATIONS:通知提示音类型

二、外部私有目录 (随着用户删除app而删除)

getExternalFilesDir(type)

/storage/emulated/0/Android/data/packagename/files/

三、外部缓存目录(随着用户删除app而删除)

getExternalCacheDir()

/storage/emulated/0/Android/data/packname/cache/

四、外部根目录

Environment.getExternalStorageDirectory()

/storage/emulated/0

路径

方法名

所属

/data/data//files

getFilesDir()

内部

/data/data//cache

getCacheDir()

内部

/data/data//app_

getDir()

内部

/storage/emulated/0

Environment.getExternalStorageDirectory()

外部根目录

/storage/emulated/0/

Environment.getExternalStoragePublicDirectory(type)

外部九大公有目录

/storage/emulated/0/Android/data//files/

getExternalFilesDir(type)

外部私有目录

/storage/emulated/0/Android/data//cache

getExternalCacheDir()

外部缓存目录

注:不管外部内部,只要路径中有包名,就是私有的,用户须要root才能访问。获取路径的方法均是Context调用的,且随着用户删除app而销毁,没有包名的路径均是Environment调用的。

注:

FileProvider的paths与对应目录解析:

root-path 对应DEVICE_ROOT,也就是File DEVICE_ROOT = new File("/"),即根目录,通常不须要配置。

files-path对应 getFilesDir() 获取到的内部文件目录。

cache-path对应 getCacheDir() 获取到的内部缓存目录。

external-path对应 Environment.getExternalStorageDirectory() 指向的外部根目录。

external-files-path对应 ContextCompat.getExternalFilesDirs() 获取到的外部私有目录。

external-cache-path对应 ContextCompat.getExternalCacheDirs() 获取到的外部缓存目录。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值