Android 访问存储卡的三种主要的目录

Android 访问存储卡(即外部存储)通常涉及以下三种主要的目录:

1. 外部存储公共目录 (Public External Storage)

这些目录对所有应用都是可见的,并且不需要任何特殊权限来读取媒体文件。但是从Android 10(API 级别 29)开始,如果要写入这些目录,则需要WRITE_EXTERNAL_STORAGE权限,并且访问路径可能受到某些限制。

  • 获取方法:使用Environment.getExternalStoragePublicDirectory()方法,传入一个类型参数如Environment.DIRECTORY_PICTURESEnvironment.DIRECTORY_MUSIC等。

  • 特点:适合保存用户希望长期保留并可以与其他应用共享的文件,如照片、音乐等。

2. 外部存储应用特定目录 (App-specific External Storage)

这些目录是应用专属的,在应用卸载后会自动删除里面的内容。不需要任何权限即可读写这些目录中的文件。

  • 获取方法:通过调用Context.getExternalFilesDir()方法获取。它可以传入一个类型参数,例如Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES),或者传入null来访问根目录。

  • 特点:适合存储应用的临时缓存数据或不需要与其他应用共享的大型文件。

3. 外部存储缓存目录 (External Cache Directory)

这是用于存储临时缓存文件的目录。系统可能在存储空间不足时删除这些缓存文件。

  • 获取方法:通过调用Context.getExternalCacheDir()来访问。

  • 特点:适合存放应用运行过程中产生的临时缓存文件。

使用方面的区别

  1. 权限

    • 公共目录:从Android 4.4开始,不需要权限就可以读取媒体文件,但Android 10及更高版本对文件写入做了限制。
    • 应用特定目录和缓存目录:不需要任何权限就可以进行读写操作。
  2. 数据持久性

    • 公共目录:文件通常被保留,直到用户手动删除它们。
    • 应用特定目录和缓存目录:当应用被卸载时,其中的文件会被自动删除。
  3. 共享性

    • 公共目录:文件可以被用户和其他应用访问。
    • 应用特定目录:虽然理论上其他应用也可以访问,但实际上主要是为当前应用服务的,其他应用通常不会去访问。
  4. 隐私性

    • 公共目录:由于所有应用都可以访问,所以隐私性较差。
    • 应用特定目录:相对私密,不易被其他应用访问。
  5. 存储策略

    • 公共目录:建议仅存储用户主动创建或明确希望与他人分享的文件。
    • 应用特定目录:适合存储应用的核心数据和不需共享的大型资源文件。
    • 缓存目录:适合存储临时文件,应用必须能够处理这些文件被系统删除的情况。
  6. Android 10(API 级别 29)以上的存储变更

    • 引入分区存储(Scoped Storage),限制了对外部存储的全局访问,强制应用使用自己的应用特定目录,或通过MediaStore API访问共享文件类型。

开发者在选择存储位置时,应该考虑到这些区别,并基于用户的数据隐私以及文件的用途选择正确的存储路径。

另外更全的介绍 《Android 文件存储系统》

相关推荐

  1. Android 访问存储主要目录

    2024-01-25 10:20:04       36 阅读
  2. Linux目录结构(介绍主要

    2024-01-25 10:20:04       20 阅读
  3. 修改 Docker 镜像默认存储位置方法

    2024-01-25 10:20:04       14 阅读

最近更新

  1. tensorflow学习笔记(二)

    2024-01-25 10:20:04       0 阅读
  2. Typescript【网址取ID传入后端API】

    2024-01-25 10:20:04       0 阅读
  3. mongodb-数据备份和恢复

    2024-01-25 10:20:04       0 阅读
  4. 《C++20设计模式》中单例模式

    2024-01-25 10:20:04       1 阅读
  5. 数字孪生技术在智能家居中的应用

    2024-01-25 10:20:04       1 阅读
  6. 单例模式的多种实现方式及其在框架中的使用

    2024-01-25 10:20:04       1 阅读
  7. 一、Prometheus和Grafana搭建

    2024-01-25 10:20:04       1 阅读

热门阅读

  1. window10 conda activate指令无效的问题

    2024-01-25 10:20:04       33 阅读
  2. 【零碎知识】pip install 与 conda install 的区别

    2024-01-25 10:20:04       38 阅读
  3. 关于视觉3d目标检测学习像素深度的一点理解

    2024-01-25 10:20:04       35 阅读
  4. 【RL】(task4)DDPG算法、TD3算法

    2024-01-25 10:20:04       33 阅读
  5. [笔记]事务简介-springboot

    2024-01-25 10:20:04       35 阅读
  6. 07 FreeRTOS - 常用调试函数(三) vTaskList()

    2024-01-25 10:20:04       32 阅读
  7. WPF中StatusBar控件显示状态栏信息

    2024-01-25 10:20:04       32 阅读
  8. 正则表达式元字符-详细说明

    2024-01-25 10:20:04       31 阅读
  9. QT基础篇(16)QT5单元测试框架

    2024-01-25 10:20:04       35 阅读