Android存储区域介绍

204 阅读2分钟

存储区域

在 Android 系统中,存储区域分为内部存储和外部存储。每种存储类型都有不同的用途和访问权限。以下是对这些存储区域的详细介绍:

内部存储

内部存储是应用的私有存储区域,数据存储在设备的内部存储空间中。内部存储的特点是:

  • 私有性:存储的数据仅对应用自身可见,其他应用无法访问。
  • 安全性:数据默认加密,更加安全。
  • 生命周期:当应用被卸载时,存储的数据也会被删除。

内部存储的常用目录

1. 应用数据目录:

  • 路径:/data/data/<package-name>/
  • 使用:存储应用的私有数据。
  • 获取方法:context.filesDir
    val file = File(context.filesDir, "example.txt")
    

2. 缓存目录:

  • 路径:/data/data/<package-name>/cache/
  • 使用:存储应用的缓存数据。
  • 获取方法:context.cacheDir
    val 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.externalCacheDir
    val 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