最近做新项目的时候,发现对于文件存储这块的知识很模糊了,可能做之前的项目一直用Crtl + c v大法,然后很多基础忘光了,每次又都重新百度搜索这类知识,继续cv上去...现在索性自己记录一下,加深理解,就算忘了也方便查找。
知识点
Android存储路径分为内部存储路径和外部存储路径。
- 内部存储的路径不可见,使用不需要权限,可以放些很小的数据
- 外部存储的路径是可见的,但是使用要申请权限,可以存放app使用过程中产生的图片,音频等较大文件。
- 日常app清除缓存或者文件就是对应的CacheDir(),FilesDir()这些方法路径下的文件,卸载app的时候,包名目录以下的文件都会被删除,如下:
方法名 | 路径 |
---|---|
Context.getCacheDir() | /data/user/0/包名/cache |
Context.getFilesDir() | /data/user/0/包名/files |
Context.getExternalCacheDir() | /storage/emulated/0/Android/data/包名/cache |
Context.getExternalFilesDir() | /storage/emulated/0/Android/data/包名/files |
- 在使用外部存储执行任何工作之前,应始终调用getExternalStorageState()以检查介质是否可用。介质可能已装载到计算机,处于缺失、只读或其他某种状态。
- 如下是一些公共目录下的方法和对应的存储路径,使用时需要权限,卸载app不会被删除。
方法名 | 路径 |
---|---|
Environment.getExternalStorageDirectory() | /storage/emulated/0 |
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) | /storage/emulated/0/DCIM |