Fork me on GitHub

Android之数据存储

Android中数据存储有5中方式,分别是以下五种:

  • SharePreference
  • 数据库
  • Content Provider(用于数据共享)
  • 网络存储(需要网络进行请求数据)
  • 文件(File)
    • 应用相关内部存储(缓存和文件)
    • 应用相关外部存储(缓存和文件)
    • 应用无关存储(缓存和文件)

具体位置

SharePreference

context.getSharedPreferences(name,mode)
获取的路径是 /data/data/应用包名/shared_prefs

数据库

File dbFile = content.getDatabasePath("");
/data/data/应用包名/databases

File

FileProvider适配说明

Value Path 说明 权限
root-path / File DEVICE_ROOT = new File("/") 根目录 不需要此操作
files-path /data/data/<包名>/files content.getFileDir() 获取到的目录 无需权限,内部不足时会删除此文件夹
cache-path /data/data/<包名>/cache content.getCacheDir() 无需权限,内部不足时会删除此文件夹
code_cache /data/data/<包名>/code_cache context.getCodeCacheDir() 无需权限,应用升级时会删除该目录下的内容
external-path /storage/emulated/0 Environment.getExternalStorageDirectory() 需要权限,应用无关存储
external-files-path /storage/emulated/0/Android/data/<包名>/files ContextCompat.getExternalFilesDirs() 需要权限,应用外部存储文件
external-cache-path /storage/emulated/0/Android/data/<包名>/cache ContextCompat.getExternalCacheDirs() 需要权限,应用外部存储文件

应用外部存储文件

  • 需要配置相应的权限
  • 随着应用的卸载而被删除
  • 可以被其他应用访问
File externalFilesDir = context.getExternalFilesDir(Type);
路径: /storage/emulated/0/Android/data/应用包名/files/Type

Type取值有:
	Environment.DIRECTORY_MUSIC
	Environment.DIRECTORY_PODCASTS
	Environment.DIRECTORY_RINGTONES
	Environment.DIRECTORY_ALARMS
	Environment.DIRECTORY_NOTIFICATIONS
	Environment.DIRECTORY_PICTURES
	Environment.DIRECTORY_MOVIES

无关乎应用的存储

  • 需要配置相应的权限
  • 应用都可以访问
  • 不会随着应用卸载而被删除
File rootDirectory = Environment.getRootDirectory();
路径: /system

File dataDirectory = Environment.getDataDirectory();
路径: /data

File cacheDirectory = Environment.getDownloadCacheDirectory();
路径: /data/cache

File storageDirectory = Environment.getExternalStorageDirectory();
路径: /storage/emulated/0

File storagePublicDirectory = Environment.getExternalStoragePublicDirectory(Type);
路径: /storage/emulated/0/Type

Type取值有:
	Environment.DIRECTORY_MUSIC
	Environment.DIRECTORY_PODCASTS
	Environment.DIRECTORY_RINGTONES
	Environment.DIRECTORY_ALARMS
	Environment.DIRECTORY_NOTIFICATIONS
	Environment.DIRECTORY_PICTURES
	Environment.DIRECTORY_MOVIES
posted @ 2021-05-19 15:42  KevinAt2022  阅读(183)  评论(0)    收藏  举报