您的位置:首页 > 移动开发 > Android开发

Android 数据存储三种方式

2017-06-07 23:34 531 查看
1.文件存储

这种方式存的是字符串取出来的也是字符串

private void save(){
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("my.txt", Context.MODE_APPEND);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write("Hello world BOB");
}catch (IOException e){
e.printStackTrace();
}finally {
try{
writer.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
private String read(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuffer buffer = new StringBuffer();
try{
in = openFileInput("my.txt");
reader = new BufferedReader(new InputStreamReader(in));
String lines = "";
while ((lines = reader.readLine())!=null){
buffer.append(lines);
}
}catch (Exception e){
e.printStackTrace();
}finally {
if (reader!=null){
try{
reader.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
return buffer.toString();
}


2.SharedPreferences

存的是xml键值对方式(Map),可以存多种类型,存的是整形取出来的就是整形

SharedPreferences存储过程

- 生成SharedPreferences对象实例

- 调用SharedPreferences的edit()方法获取SharedPreferences.Editor对象

- 向SharedPreferences.Editor对象添加数据

- 调用apply()或者commit()将添加数据提交完成存储

生成sharedPreferences对象的三种方式

Context类中的getSharedPreferences

需要传入参数文件名和操作模式,不过目前只有Context.MODE_PRIVATE这一种

SharedPreferences preferences = context.getSharedPreferences("fileName",Context.MODE_PRIVATE);


Activity类中的getPreferences

和Context类中的调用不同之处是不用传入文件名,默认当前活动类名作为文件名

SharedPreferences preferences = getPreferences(MODE_PRIVATE);


PreferenceManager类中的getDefaultSharedPreferences方法

默认当前应用程序包名作为文件名前缀命名文件

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);


小例子

SharedPreferences preferences = getSharedPreferences("data",MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("name","BOB");
editor.putInt("age",12);
editor.putBoolean("sex",false);
editor.commit();//editor.apply();


SharedPreferences读取过程

小例子

SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
//如果没有取到相应的值就使用默认值
String name = pref.getString("name","如果不存在默认值");
int age = pref.getInt("age",0);
boolean sex = pref.getBoolean("sex",false);


当然Preferences还可以对自己写的xml(包括布局layout)进行编辑

3.sqlite3数据库

现在好多第三方面向对象的数据库封装都很好用,当然不怕麻烦原生的也可以就是麻烦点,就不多介绍了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息