一. Andriod 三大存储方式
1. sharedPreference存储: 程序中有少量数据需要保存时使用,如下图,只需保存用户名和密码
设置界面中,相关设置信息的保存
2.文件存储:以文件的方式存储起来
3.SQLite数据库存储,有大量的数据需要存放,访问
二. sharedPreference存储:(不是控件,无属性,SharedPreference是接口,无读写数据能力)
1.定义:以键值对的方式来存储数据,保存数据给数据提供对应键,读取时通过键把值读取
2.使用方法:内部有editor接口
3.将数据存储到SharedPreference中
SharedPreferences.Editor editor=getSharedPreferences("myfile",0).edit();
editor.putString("name",edit_name.getText().toString());//输入名字放到name键中
editor.putString("pwd",edit_pwd.getText().toString());//输入密码放到pwd键中
editor.putBoolean("st",check_reme.isChecked());//把复选框状态放到st键中
editor.commit();//提交
4.从SharedPreference中读取数据
String myname= getSharedPreferences("myfile",0).getString("name","");
String mypwd= getSharedPreferences("myfile",0).getString("pwd","");
Boolean myst= getSharedPreferences("myfile",0).getBoolean("st",false);
if(myst==true){
edit_name.setText(myname);
edit_pwd.setText(mypwd);
check_reme.setChecked(true);
}else{
edit_name.setText("");
edit_pwd.setText("");
check_reme.setChecked(false);
}
三. 文件存储:
1.文件存储包括存数据到文件当中和从文件中取数据两个过程
2.存数据到文件中
private void onbuttonClick() {
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//把输入的内容保存到文件里面
try {
//Context类中提供了一个方法openFileOutput可以实现向文件中写入数据
// 参数:(“文件名” , 文件的操作模式:覆盖/追加),路径:data/data/包名/files/
FileOutputStream fout=openFileOutput("zs.txt",0);
//数据写入文件中
fout.write(edit_input.getText().toString().getBytes());
//关闭文件输出流
fout.close();
//弹出提示,提交成功
Toast.makeText(MainActivity.this,"提交成功",Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
3.从文件中读取内容
private void readFile() {
try {
//调用Context类的openFileInput方法得到一个文件输入流对象
FileInputStream fin =openFileInput("zs.txt");
//创建一个数组缓冲区,用来存放读取的很多字节数据;
byte[] arr=new byte[fin.available()];
//数据的读取
fin.read(arr);
//关闭输入流
fin.close();
//数据显示出来--//byte类型的数据转为字符串
edit_input.setText(new String(arr));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
4.完善工程:自动显示当前时间
private void displaytime() {
//创建一个时间类,导入的包:import android.text.format.Time;
Time time=new Time();
//获取系统当前时间
time.setToNow();
//把获取的年月日显示出来
edit_input.append("\n\n"+time.year+"年"+(time.month+1)+"月"+time.monthDay+"日"+"\n");
//将光标移动至文字末尾
edit_input.setSelection(edit_input.getText().length());
}