Android数据存储和读取的三种方法
一、文件存储
1、利用文件进行数据的存储
public static boolean saveAsFilepath(String username, String password){
// 直接给出要写入文件的路径
File file = new File("data/data/cn.edu.jssvc.logonscreen/info.txt");
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(username.getBytes());
fos.write(("\n"+password).getBytes());
fos.close();
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
2、利用文件进行数据的读取
public static String[] loadInfoAsFilepath(){
String []temp=new String[2];
// 直接给出要读取文件的路径
File file = new File("data/data/cn.edu.jssvc.logonscreen/info.txt");
try {
FileInputStream fis = new FileInputStream(file);
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
temp[0] = reader.readLine();
temp[1] = reader.readLine();
} catch (Exception e) {
e.printStackTrace();
}
return temp;
}
二、Context存储
1、利用Context进行数据的存储
public static boolean saveAsContext(Context context, String username, String password){
FileOutputStream fos = null;
try {
fos = context.openFileOutput("info2.txt", context.MODE_PRIVATE);
fos.write(username.getBytes());
fos.write(("\n"+password).getBytes());
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
这种方法会将数据保存到data/data/包名/files目录下
2、利用Context进行数据的读取
public static String[] loadInfoAsContext(Context context){
// 计算要读取文件的总行数
int fileLength = 0;
try {
// 自动读取data/data/包名/files目录,只需给出文件名即可
FileInputStream fis = context.openFileInput("info2.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
while(reader.readLine()!=null) {
fileLength++;
}
} catch (Exception e) {
e.printStackTrace();
}
// 读取文件数据
String []temp = new String[fileLength];
try {
FileInputStream fis = context.openFileInput("info2.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
temp[0] = reader.readLine();
temp[1] = reader.readLine();
} catch (Exception e) {
e.printStackTrace();
}
return temp;
}
三、SharedPreferences存储
首先通过Context的getSharedPreferences()方法获取SharedPreferences对象
SharedPreferences sp;
// getSharedPreferences(para1:文件名;para2:模式),是Context的方法
// 读和写都使用sp进行操作,所以处理的文件都是info3
sp = getSharedPreferences("info3", MODE_PRIVATE);
1、利用SharedPreferences进行数据的存储
SharedPreferences.Editor editor = sp.edit();
// putString(para1:键;para2:值),是xml保存数据的格式
editor.putString("USERNAME", username);
editor.putString("PASSWORD", password);
editor.putBoolean("ISCHECKED", checked);
// 只有调用commit方法后,putXXX才会生效
editor.commit();
Log.d("MainActivity", "保存成功");
2、利用SharedPreferences进行数据的读取
这种方法会自动读取data/data/包名/shared_prefs目录,只需给出文件名即可
这种方法可以将指定Key对应的value读取出来
// getString:获取xml文件中的数据,这里给出key,获取对应的value(para1:键;para2:如果找不到对应的value,则将defvalue作为value)
Log.d("MainActivity", sp.getString("USERNAME","defusername");
Log.d("MainActivity", sp.getString("PASSWORD","defpassword");
最后,虽然有三种数据存储和读取的方法,但平时进行Android开发时,建议使用第二种或第三种方法