如果有错误欢迎指正。
1、简介
Android 提供了文件系统,统一管理手机内的各种文件。
站在应用的角度,文件主要分为三类:
- 系统文件,包括底层的 Linux 驱动文件等,用户不可见。[root 除外]
- 内部存储,是私有的存储空间,开发者可以通过 Android SDK 提供的 API 访问,用户不可见。[root 除外] 其他应用不能访问。
- 外部存储,用户可见。开发者可以通过 Android SDK 提供的 API 访问。其他应用不能访问。
站在用户角度,分为系统文件,应用私有文件,以及普通的文件。其中系统文件用户不可见,应用私有文件中,外部存储中的文件用户可见。
也就是说:
- 不可见的部分(内部存储),可以粗略分为两块:系统文件,以及应用的用户不可见私有文件;
- 可见的部分(外部存储),分为用户可见的应用私有文件以及一般的文件。
一个应用拥有的在两个地方(内部存储、外部存储)存储的文件,其他应用不可以访问(除非应用主动通过内容提供器暴露路径),因而被称为应用私有空间。
重点介绍的是应用层面的内部存储和外部存储两个部分。
2、内部存储
英文名称为 internal storage
。
可以通过 context
获取 API 访问,API 和功能如下:
getFilesDir()
获取 /data/data/<包名>/files
目录,返回 File 对象。
getDir()
获取 /data/data/<包名>
目录,返回 File 对象。
getCacheDir()
获取 /data/data/<包名>/cache
目录,返回 File 对象。
以上目录是专门为当前应用准备的,这部分对于用户来说不可见,不必申请权限。
当 app 删除时,应用内部存储对应的目录以及其下的文件都会被删除。
如果应用不需要与其他应用共享文件的话,以上几个 API 足够应付应用文件存储了。
3、外部存储
英文名称为 external storage
。
可以通过 context
获取 API 访问。
外部存储实际上指的一般是 sd 卡。现在安卓机上都有文件管理的 app,一般打开 app 看到的最