Android - 数据的存储
Android中的数据存储有以下几种方式:
- 文件存储
- SharedPreferences
- SQLite数据库
- Content Provider
文件存储
Activity中的openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在JavaSE 环境中保存数据到文件中是一样的。openFileInput()方法则用于读取当前应用的保存的数据
openFileOutpupt详解
openFileOutput(String name, int mode)
name - 指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/
mode - 文件操作模式,即访问权限
0 或者MODE_PRIVATE 默认的模式,文件为私有的,只能本应用程序才能访问;
MODE_APPEND 添加默认,数据将追加到文件末尾;
MODE_WORLD_READABLE 全局可读;!危险
MODE_WORLD_WRITEABLE 全局可写。!危险
eg.
1 | public class FileActivity extends Activity { |
获得应用的文件存储路径
getFileDir() - /data/data/<当前应用包名>/files/getCacheDir() - /data/data/<当前应用包名>/cache/Environment.getExternalStorageDirectory() - 用于获取SDCard的目录,
注意:
- 写数据应在程序清单文件中加入sdcard的访问权限:
android.permission.WRITE_EXTERNAL_STORAGE - 先判断sdcard是否挂载:
Environment.getExternalStorageState() 应返回 Environment.MEDIA_MOUNTED
eg.获取sdcard的可用大小:1
2
3
4
5
6
7
8if(Environment.getExternalStorageState().equals(Environment. MEDIA_MOUNTED)){
File sd = Environment. getExternalStorageDirectory();
StatFs stat = new StatFs(sd.getPath());
long availableBlocks = stat.getAvailableBlocks();
long blockSize = stat.getBlockSize();
long availableSize = availableBlocks * blockSize;
String totalAvailableSize = Formatter.formatFileSize(getApplicationContext(), availableSize);
}SharedPreferences
Android应用一般采用SharedPreferences来存储于应用相关的配置参数
其实就是/data/data/<package name>/shared_prefs/目录下的xml文件
