存储区域
在 Android 系统中,存储区域分为内部存储和外部存储。每种存储类型都有不同的用途和访问权限。以下是对这些存储区域的详细介绍:
内部存储
内部存储是应用的私有存储区域,数据存储在设备的内部存储空间中。内部存储的特点是:
- 私有性:存储的数据仅对应用自身可见,其他应用无法访问。
- 安全性:数据默认加密,更加安全。
- 生命周期:当应用被卸载时,存储的数据也会被删除。
内部存储的常用目录
1. 应用数据目录:
- 路径:
/data/data/<package-name>/ - 使用:存储应用的私有数据。
- 获取方法:
context.filesDirval file = File(context.filesDir, "example.txt")
2. 缓存目录:
- 路径:
/data/data/<package-name>/cache/ - 使用:存储应用的缓存数据。
- 获取方法:
context.cacheDirval cacheFile = File(context.cacheDir, "example_cache.txt")
外部存储
外部存储是设备上的公共存储空间,可以通过 SD 卡或内置存储提供。外部存储分为应用专属目录和共享目录。
应用专属目录
应用专属目录用于存储应用的私有数据,这些数据对其他应用不可见,但用户可以通过文件管理器访问。数据在应用卸载时会被删除。
1. 应用专属文件目录:
- 路径:
/sdcard/Android/data/<package-name>/files/ - 使用:存储应用的私有文件。
- 获取方法:
context.getExternalFilesDir(type)val file = File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "example.jpg")
2. 应用专属缓存目录:
- 路径:
/sdcard/Android/data/<package-name>/cache/ - 使用:存储应用的私有缓存数据。
- 获取方法:
context.externalCacheDirval externalCacheFile = File(context.externalCacheDir, "example_cache.txt")
共享目录
共享目录用于存储用户的公共数据,所有应用都可以访问这些数据。共享目录中的数据在应用卸载时不会被删除。
1. 媒体文件:
- 图片:
/sdcard/Pictures/- 获取方法:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
- 获取方法:
- 音频:
/sdcard/Music/- 获取方法:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
- 获取方法:
- 视频:
/sdcard/Movies/- 获取方法:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
- 获取方法:
val picturesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
val pictureFile = File(picturesDir, "example.jpg")
2. 文档:
- 文档:
/sdcard/Documents/- 获取方法:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)
- 获取方法:
val documentsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)
val documentFile = File(documentsDir, "example.pdf")
3. 下载:
- 下载文件:
/sdcard/Download/- 获取方法:
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
- 获取方法:
val downloadsDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
val downloadFile = File(downloadsDir, "example.zip")
系统或其他应用创建的目录
这些目录是系统或其他应用创建的,可能包含系统文件、日志、其他应用的缓存等。开发者通常不会直接操作这些目录。
存储权限
在访问应用内部专属目录和应用外部专属目录时无需申请读写权限。
在访问外部存储的共享目录时,需要申请以下权限:
- 读取权限:
android.permission.READ_EXTERNAL_STORAGE - 写入权限:
android.permission.WRITE_EXTERNAL_STORAGE