实现数据持久化主要有3种:文件存储、sharedpreferences、sqlite数据库。这里要讲的是文件存储。
文件存储不对内容进行任何的格式化处理,所有的数据都是原封不动地保存到文件中的,所以它适合存储一些简单的文本数据或二进制数据。
·将数据存储到文件
Context类提供了一个FileOutputStream openFileOutput(string FileName, int Mode)用于将数据存储到指定文件
参数一:string FileName文件名,默认存储到/data/data/<package name>/files/目录下
参数二:int Mode文件操作模式,默认MODE_PRIVATE,还有MODE_APPEND
返回值:返回FileOutputStream对象,然后就可以使用java流的方式将数据写入文件了
public void save(string data){
FileOutputStream out=null;
BufferedWriter writer=null;
try{
//获取FileOutputStream对象,并写入文件
out=openFileOutput("fliename",Context.MODE_PRIVATE);
writer=new BufferedWriter=(new OutputSreamWriter(out));
writerwriter(data);//将数据写入文件
catch(IOException e){
e.printStackTrace();
}finally{//如果writer不为null,一定要关闭
try{
if(writer != null){
writer.close();//关闭流
}
}catch(IOException e){
e.printStackTrace();
}
}
}
·从文件读取数据
Context类提供了一个FileInputStream openFileInput(string FileName)用于从文件读取数据
参数一:string FileName,指定文件名
返回值:返回FileInputStream对象,然后就可以使用java流的方式读取文件了
public string read(){
FileInputStream in=null;
BufferedReader reader=null;
StringBuilder builder=new StringBuilder();//存储读取出来的数据
try{
in=openFileInput("data")//获取与文件data关联的FileInputStream对象
reader=new BufferedReader(new InputStreamReader(in));
//一行一行的读取
String line="";
while((line = reader.readline())!=null){
builder.append(line);//将读取出来的数据一行一行的暂存在builder
}
}catch(IOException e){
e.printStackTrace();
}finally{ //如果文件流不为空,一定要关闭
try{
if(reader != null){
writer.close();//关闭流
}
}catch(IOException e){
e.printStackTrace();
}
}
}