1、文件存储
1).简单说明
- 适用范围:适合存储一些简单的 文本数据 和 二进制数据
- 存储路径:/ data / data / package_name / files / 目录
- 使用:Context 提供了一个 openFileOutput() 方法
@Override
public FileOutputStream openFileOutput(String name, int mode)
throws FileNotFoundException {
return mBase.openFileOutput(name, mode);
}
? name 表示文件名;mode 表示存储模式 ? 目前 mode 主要有两种模式可选 :
2).简单使用
String data = "data data ";
FileOutputStream outputStream = null;
BufferedWriter writer = null;
try {
outputStream = openFileOutput("data", Context.MODE_APPEND);
writer = new BufferedWriter(new OutputStreamWriter(outputStream));
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
outputStream.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
2、SharedPreferences 存储
1).简单说明
- 存储方式:以键值对存储
- 本质:接口
- 获取方式:在Context中,通过 getSharedPreferences 方法获取实例化对象
@Override
public SharedPreferences getSharedPreferences(String name, int mode) {
return mBase.getSharedPreferences(name, mode);
}
? name 表示文件名;mode 表示存储模式 ? 目前 mode 主要有一种模式可选 : MODE_PRIVATE ? 代表只有当前的应用程序才可以进行读写操作
2).简单使用
SharedPreferences sharedPreferences = getSharedPreferences("data",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name","zhangsan");
editor.putString("age","17");
editor.apply();
apply 和 commit 的区别:apply()将修改保存到内存(memory)中,然后再异步得保存到磁盘上(内存卡);而commit()直接在当前线程中保存到磁盘上。 所以建议使用 apply,减少UI线程的阻塞。
3、SQLite 数据库存储
1).简单说明
- SQlite 是一款轻量级的关系型数据库
- Android 专门提供了 SQLiteOpenHelper 帮助类
- 类型:抽象类
- 使用:需要继承帮助类并实现里面的方法
- 通过向上转型的方式获取db实例对象,对数据库进行操作
DBHelper dbHelper = new DBHelper(MainActivity.this, "info.db",null,1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
2).简单使用
参考链接
4、总结
? 三种存储方法本身也是调用接口,其实没那么难搞。除了以上三种方法,还可以通过使用 GreenDao 框架进行数据存储,非常方便
|