Android数据持久化
文件
- 将数据存储到文件
Context类(Activity的间接父类)中提供了一个openFileOutput()方法,第一个参数是文件名,无需包含路径,因为所有的文件都默认存储到/data/data/包名/files/目录下。第二个是操作模式,MODE_PRIVATE(覆盖)或MODE_APPEND(追加)。
FileOutputStream out = openFileOutput("data",Context.MODE_PRIVATE);
BufferedWriter writer =newBufferedWriter(newOutputStreamWriter(out));
writer.write("要写入的数据")
- 从文件读取数据
Context类(Activity的间接父类)还提供一个openFileInput()方法,需要一个参数,要读取的文件名。
FileInputStream in = openFileInput("data");//文件名
BufferedReader reader =newBufferedReader(newInputStreamReader(in));
SharedPreferences
使用键值对来进行存储。比文件存储方便很多。
- 将数据存入SharedPreferences中
首先,获得SharedPreferences对象,有三种方法;
//方法1:
SharedPreferences share = getSharedPreferences("data", MODE_PRIVATE);
//方法2:文件名默认为类名
SharedPreferences share = getPreferences(MODE_PRIVATE);
//方法3:静态方法,参数为一个Context,默认包名作为文件名的前缀
SharedPreferences share =PreferenceManager.getDefaultSharedPreferences(this);
第二步,调用SharedPreferences对象的edit()方法获取一个Editor对象。
第三,向Editor中添加数据
最后,调用commit()方法提交数据。
SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVITE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.putBoolean("married",false);
editor.commit();
- 从SharedPreferences中读取数据
获取SharedPreferences对象之后get相应的类型即可。
SharedPreferences pref = getSharedPreferences("data", MODE_PRIVATE);
String name = pref.getString("name","");
int age = pref.getInt("age",0);
boolean married = pref.getBoolean("married",false);
SQLite数据库
Android专门提供了一个SQLiteOpenHelper帮助类。这个类是抽象类,提供两个抽象方法onCreate()和onUpgrade()。还提供了两个实例方法getReadableDatabase()和getWritableDatabase(),它们创建或打开一个数据库,区别是,当数据库不可写入时,前者会以只读方式打开,而后者会抛出异常。
- 创建数据库