数据存储基础
1.把数据存储到文件中
Android应用程序存储数据的方式
1、保存到文件
2、SQLite数据库
3、内容提供者
4、sharedproferrences保存数据
5、网络
/data/data/应用包名/info.txt
2.从文件中读取数据并显示到界面上
(1)把文件保存到当前应用程序的目录下的步骤:
1、创建一个文件,目录/data/data/<包名>/文件名
2、创建一个文件输出流,把数据写到文件上
3、关闭输出流。
代码:
//保存数据
File file = new File("/data/data/com.itheima.login/info.txt");
FileOutputStream fos = new FileOutputStream(file);
String info = qq + "##"+ pwd;
fos.write(info.getBytes());
fos.close();
Toast.makeText(this, "保存数据成功", 0).show();
(2)读取文件中的数据,并显示到界面上
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_qq = (EditText) findViewById(R.id.et_qq);
et_pwd = (EditText) findViewById(R.id.et_pwd);
cb = (CheckBox) findViewById(R.id.cb);
//读取文件中的数据,并显示到界面上
Map<String,String> map = readInfo(this);
if(map != null){
et_qq.setText(map.get("qq"));
et_pwd.setText(map.get("pwd"));
}
}
/**
* 读取文件中的数据
* @param ctx
* @return
*/
public Map<String,String> readInfo(Context ctx){
String qq = "";
String pwd = "";
Map<String,String> map = new HashMap<String,String>();
try {
File file = new File("/data/data/com.itheima.login/files/info.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String info = br.readLine();
String[] array = info.split("##");
qq = array[0];
pwd = array[1];
map.put("qq", qq);
map.put("pwd", pwd);
return map;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
3.存储到SD卡(重点)
异常信息:
09-21 23:25:32.068: W/System.err(24718): java.io.FileNotFoundException: /storage/sdcard/info.txt: open failed: EACCES (Permission denied)
步骤:
1、 在SD卡上创建一个文件,
2、创建一个输出流往sd卡上写数据
String data = "dsfdsae";
File file = new File(Environment.getExternalStorageDirectory(), "info.txt");
FileOutputStream fos = new FileOutputStream(file);
fos.write(data.getBytes());
fos.close();
3、在清单文件中添加访问SD卡的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>