一、文件存储
文件数据的保存
Context类中提供来openFileOutput()
方法,用于将数据保存到指定文件中,使用该方法的时候需要提供两个参数,第一个参数是保存到的文件的文件名,第二个参数是文件的操作方式,有MODE_PRIVATE和MODE_APPEND两种,前者是默认方式,每次写入内容会覆盖原内容,后者是在文件中追加内容。该方法会返回一个FileOutputStream的对象。可以使用该对象来构造一个文件输出流。
public void save(String inputText){
FileOutputStream out = null;
BufferedWriter writer = null;
try{
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(inputText);
}catch(IOException e){
e.printStackTrace();
}finally {
try{
if(writer != null){
writer.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
文件数据的读取
Context类提供了一个openFileInput()
的方法,该方法需要一个参数,即读取文件的文件名,返回一个FileInputStream对象,用于构造文件输出流。
public String load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try{
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = reader.readLine()) != null){
content.append(line);
}
}catch (IOException e){
e.printStackTrace();
}finally {
if(reader != null){
try{
reader.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return content.toString();
}
因为所有文件都是默认存储到/data/data//files/目录下的,所以传入的文件名参数不含路径,只是文件名
二、SharedPreference存储
该存储方式是使用键值对的方法存储数据
存入数据
(1)获取SharedPredferences对象
1.Context类中的getSharedPreferences()方法
传入两个参数,第一个传入的是文件名,第二个参数指定操作模式
可选MODE_PRIVATE和MODE_MULTI_PROCESS,前者是默认的参数,后者在多个进程中地同一个文件进行读写
2.Activity中的getSharedPreferences()方法
传入一个参数,只需要传入操作模式参数就好。
3.PreferenceManager类中的getDefaultSharedPreferences()方法
接收一个Context参数,并自动使用当前应用程序的包名为前缀来命名SharedPreferences文件
(2)调用Share的Preferences对象的edit()方法来获取一个SharedPreferences.Editor对象。
(3)向SharedPreferences.Edit对象中添加数据,putXXX()
(4)调用commit()方法提交数据
SharedPreferences.Editor editor = getSharedPreferences("data", MODE_PRIVATE).edit();
editor.putString("name","shengang");
editor.putInt("age",20);
editor.putBoolean("married",false);
editor.commit();
读取数据
使用SharedPreferences对象的get方法
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name", "");