android 存储方式以及路径简介
来源:互联网 发布:linux 用户目录权限 编辑:程序博客网 时间:2024/06/05 16:06
存储分成了内部存储和外部存储。注意内部存储又叫做机身内存,而且内存又包含了两个部分RAM(运行时内存,这个和运行速度有关系,是手机运行时存储数据和指令的地方)、ROM(这个才算是真正存储东西的内部存储范围,是应用配置和其他数据的地方);而外部存储就很明确了,用户的外部挂载存储设备,如SD卡,手机的内部存储卡。
来介绍几个概念:(一)
内存:全称内部存储,英文名(InternalStorage)。当我们在打开DDMS下的File Explorer面板的时候,/data目录就是所谓的内部存储 (ROM )。
但是注意,当手机没有root的时候不能打开此文件夹。
/data/data目录(存储包私有数据)。此目录下将每一个APP的存储内容按照包名分类存放好。
比如:
1.data/data/包名/shared_prefs 存放该APP内的SP信息
2.data/data/包名/databases 存放该APP的数据库信息
3.data/data/包名/files 将APP的文件信息存放在files文件夹
4.data/data/包名/cache 存放的是APP的缓存信息
……
多扯一句,下面的代码就会在files文件夹先创建一个hello_file文件并写入了数据:
- 1
- 2
- 3
- 4
- 5
(二)
外存:
/storage/sdcard/Android/data目录或者说/storage/emulated/0/Android/data包目录属于外部存储。比如我们的内部存储卡。
注意,Google官方建议开发者将App的数据存储在私有目录即/storage/emulated/0/Android/data包下,这样卸载App时数据会随之被系统清除,不会造成数据残留。
(三)
其次介绍几个除了/data目录之外的目录
1. /mnt :这个目录专门用来当作挂载点(MountPoint)。通俗点说,/mnt就是来挂载外部存储设备的(如sdcard),我们的sdcard将会被手机系统视作一个文件夹,这个文件夹将会被系统嵌入到收集系统的mnt目录
2. /dev包:Linux系统的常规文件夹。
3. /system包:系统配置的文件夹,比如Android系统框架(framework)、底层类库(lib)、字体(font)等。
……
下面说一下路径API和对以上的文件的操作:
1.getApplicationContext().getFilesDir().getAbsolutePath();和getApplicationContext().getFilesDir().getPath()
上面的两个API都是得到应用程序私有目录下的文件路径:
- 1
2.getApplicationContext().getCacheDir().getPath()
取得应用程序的缓存文件在内部存储上的存储路径
- 1
3.getApplicationContext().getExternalCacheDir().getAbsolutePath()和getApplicationContext().getExternalCacheDir().getCanonicalPath()
取得应用程序的缓存文件在外部存储上的存储路径
- 1
4.getApplicationContext().getObbDir().getAbsolutePath()
取得外部存储obb目录的根路径
- 1
5.Environment.getExternalStorageState()
得到外部存储卡(sdcard)的存储状态
- 1
6.Environment.getExternalStorageDirectory().getAbsolutePath()
得到外部存储的整个根路径
- 1
7.Environment.getDownloadCacheDirectory().getAbsolutePath()
得到外部存储的下载文件的缓存路径
- 1
8.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath()
得到外部存储的图片的根路径
- 1
9.Environment.getRootDirectory().getAbsolutePath()
- 1
10.Environment.getDataDirectory().getAbsolutePath()
- 1
最后总结一下:
内部数据:/data/data/包名/XXX
外部私有数据:/storage/emulated/0/Android/data/包名/XXX
外部公有数据:/storage/emulated/0/包名/XXX
当用应用管理来清除数据的时候:
清除缓存:将外部私有数据下的cache包(/storage/emulated/0/Android/data/包名/cache)清除,将内部数据下的cache包下的内容(/data/data/包名/cache/XXX)清除 。
清楚数据:将外部私有数据包(/storage/emulated/0/Android/data/包名)清除,将内部数据下的所有内容(/data/data/包名/XXX)清除;
- android 存储方式以及路径简介
- 浅析Android存储方式以及路径API
- 【android路径写法以及存储】
- Android获取内置、外置以及OTG等方式挂载的存储设备路径
- android--关于内部存储、外部存储以及存储路径
- Android获取存储卡路径的方式
- Android获取存储卡路径的方式
- Android获取存储卡路径的方式
- Android获取存储卡路径的方式
- Android获取存储卡路径的方式
- Android获取存储卡路径的方式
- Android数据的存储方式简介
- android 自定义xml存储方式以及存储位置
- Android 存储空间简介及不同存储路径获取
- 彻底搞懂Android文件存储---内部存储,外部存储以及各种存储路径解惑
- Android 默认AP名字,以及AP名字存储路径
- android的基础学习:SQLite存储方式以及数据库操作
- 获取存储路径以及读写
- 异常处理-5个整数
- mysql之TIMESTAMP(时间戳)用法详解
- Can't load library Android:No implementation found for native
- 【新控件】Aspose.Total for C++ 全新上线
- 文章标题
- android 存储方式以及路径简介
- 【mex】@Override
- VUE 中如何扩展组件内容
- USB 关键字
- linux很实用的命令:返回上一次所在的目录(cd
- 织梦dedecms后台采集只能采集第一页的解决办法
- CentOS7.2编译安装cmake
- logback使用日志工具类静态方法打印日志
- 如何用反射调用scala方法