Android的存储的分为:
- 内部存储
- 外部存储(SDCard、移动U盘等)
内部存储:内部存储指的是App的内部存储空间,路径通常为:/data/data/<包名>/...,Android中的SharedPreferences、database、so库文件等都存放于此。
- /data/data/<包名>/cache:缓存部分APP运行中产生的临时文件
- /data/data/<包名>/databases:数据库默认的生成目录(可以通过重写ContextWrapper修改)
- /data/data/<包名>/files:App项目的assets中的文件
- /data/data/<包名>/lib:存放so库文件
- /data/data/<包名>/shared_prefs:存放SharedPreferences产生的xml文件
- /data/data/<包名>/app_webview:webView的缓存目录(HTML5使用的LocalStorage也是存放于此)
外部存储:外部存储指的是Android手机自身扩展的存储空间或者外部插入SDCard的存储空间,路径通常为:/storage/sdcard、/mnt/sdcard、/storage/emulated/0、/sdcard等,这些路径全部都是指向同一个存储空间地址。
在访问外部存储时,需要声明SDCard的读写权限。
< uses-permission android:name ="android.permission.WRITE_EXTERNAL_STORAGE" />
< uses-permission android:name ="android.permissions.READ_EXTERNAL_STORAGE" />
存储数据路径的选择:
会随着App的删除而移除的数据,会被系统设置中的“数据清理”功能所清除。此时应该选用私有目录:
1.内部存储:/data/data/<包名>/... 2.外部存储: /storage/emulated/0/Android/data/<包名>/... 1.内部存储:context.getFilesDir()、context.getCacheDir()等 2.外部存储:context.getExternalFilesDir(type)、context.getExternalCacheDir()等
注意点:由于内部存储空间有限,较大的文件应该优先缓存在外部存储的项目私有目录中。
共享给系统其它App且不随App删除而移除的文件。此时选用公共目录:
外部存储:/storage/emulated/0/type 外部存储:Environment.getExternalStoragePublicDirectory(type)
其中的type指的是Android系统提供的标准目录类型(其实就是文件夹名称):
- android.os.Environment.DIRECTORY_MUSIC //音乐存放的标准目录 - android.os.Environment.DIRECTORY_PODCASTS //系统广播存放的标准目录 - android.os.Environment.DIRECTORY_RINGTONES //系统铃声存放的标准目录 - android.os.Environment.DIRECTORY_ALARMS // 系统提醒铃声存放的标准目录。 - android.os.Environment.DIRECTORY_NOTIFICATIONS //系统通知铃声存放的标准目录 - android.os.Environment.DIRECTORY_PICTURES //图片存放的标准目录 - android.os.Environment.DIRECTORY_DCIM //相机拍摄照片和视频的标准目录 - android.os.Environment.DIRECTORY_MOVIES //电影存放的标准目录 - android.os.Environment.DIRECTORY_DOCUMENTS //文档 - android.os.Environment.DIRECTORY_DOWNLOADS //下载的标准目录E
END