数据存储种类:
系列文档:
数据存储详解(一)—->SharedPreferences(xml存储)
数据存储详解(二)—->File存储:内部存储 -Cache和外部存储-SD卡
数据存储详解(四)及四大组件之一 之—>ContentProvider(内容提供者)
SharedPreferences(xml存储):
使用:
1.获取SharedPreferences :
1)getSharedPreferences(“key”,MODE);
MODE:
MODE_PRIVATE:常用
MODE_WORLD_READABLE:可读
MODE_WORLD_WRITEABLE:可写
2)getPreferences(MODE);
范例:
效果演示:
代码详解:
主activity中:
public class MainActivity extends Activity implements OnClickListener {
private Button mButtonwrite;
private Button mButtonread;
private TextView mTextView;
private EditText mEditView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButtonwrite = (Button) findViewById(R.id.buttonwrite);
mButtonread = (Button) findViewById(R.id.buttonread);
mTextView = (TextView) findViewById(R.id.textView);
mEditView = (EditText) findViewById(R.id.editText);
mButtonwrite.setOnClickListener(this);
mButtonread.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
/**
* 写入数据到xml中存储
*/
case R.id.buttonwrite:
writeTo();
break;
/**
* 将数据从xml中读出
*/
case R.id.buttonread:
readTo();
break;
default:
break;
}
}
public void readTo() {
SharedPreferences preferences = getSharedPreferences("preferences_key",MODE_PRIVATE);//1.获得SharedPreferences
String str = preferences.getString("str_key", "我是默认值");//2.取出相应的数据即可,第二个参数是如果没有相应的键值,所输出的默认值
mTextView.setText(str);
}
public void writeTo() {
SharedPreferences preferences = getSharedPreferences("preferences_key",MODE_PRIVATE);//1.获得SharedPreferences
SharedPreferences.Editor editor = preferences.edit();//2.要写入必须先获得Editor,SharedPreferences本身没写方法
editor.putString("str_key", mEditView.getText()+"");
editor.commit();//3.必须提交,或者用apply()
}
}
解析:
写入:必须用SharedPreferences中的Editor
读出:
1>也是先获得SharedPreferences,可以利用getSharedPreferences(“preferences_key”,MODE_PRIVATE);或者getPreferences(MODE_PRIVATE)
查看存储的方法:
延伸:读写数据的流:
PrintWriter和BufferedWriter的区别:
1. PrintWriter的print、println方法可以接受任意类型的参数,而BufferedWriter的write方法只能接受字符、字符数组和字符串;
2. PrintWriter的println方法自动添加换行,BufferedWriter需要显示调用newLine方法;
3. PrintWriter的方法不会抛异常,若关心异常,需要调用checkError方法看是否有异常发生;
4. PrintWriter构造方法可指定参数,实现自动刷新缓存(autoflush);
5. PrintWriter的构造方法更广。