Android 访问存储卡(即外部存储)通常涉及以下三种主要的目录:
这些目录对所有应用都是可见的,并且不需要任何特殊权限来读取媒体文件。但是从Android 10(API 级别 29)开始,如果要写入这些目录,则需要WRITE_EXTERNAL_STORAGE
权限,并且访问路径可能受到某些限制。
获取方法:使用Environment.getExternalStoragePublicDirectory()
方法,传入一个类型参数如Environment.DIRECTORY_PICTURES
或Environment.DIRECTORY_MUSIC
等。
特点:适合保存用户希望长期保留并可以与其他应用共享的文件,如照片、音乐等。
这些目录是应用专属的,在应用卸载后会自动删除里面的内容。不需要任何权限即可读写这些目录中的文件。
获取方法:通过调用Context.getExternalFilesDir()
方法获取。它可以传入一个类型参数,例如Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
,或者传入null
来访问根目录。
特点:适合存储应用的临时缓存数据或不需要与其他应用共享的大型文件。
这是用于存储临时缓存文件的目录。系统可能在存储空间不足时删除这些缓存文件。
获取方法:通过调用Context.getExternalCacheDir()
来访问。
特点:适合存放应用运行过程中产生的临时缓存文件。
权限:
数据持久性:
共享性:
隐私性:
存储策略:
Android 10(API 级别 29)以上的存储变更:
开发者在选择存储位置时,应该考虑到这些区别,并基于用户的数据隐私以及文件的用途选择正确的存储路径。
另外更全的介绍 《Android 文件存储系统》