Android 数据存储(二)文件存储

在android中数据存储分四种:文件存储,共享参数存储,外部存储,数据库存储,各自都有优势和缺点,本文章主要了解文件存储。
一。存储原理及步骤:文件存储的原理就是用IO流的原理,对数据进行写入和读出,具体步骤如下:
1.用openFileOutputStream()和openFileInputStream()得到FileOutputStream/FileInputStream;
2.通过FileOutputStream()/FileInputStream()得到BufferedReader/BufferedWriter(缓存流,可提高效率);
3.用write()/read()方法对数据进行相应的操作。
4.用close()关闭流。

二。存储路径:data/data/包名/files下。
三。具体实例:
public class MainActivity extends Activity {


private EditText editText; 
private String content;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText=(EditText) findViewById(R.id.editText);
    }


    /**
     * 用于保存数据
     */
    public void saveData(View view){
    content=editText.getText().toString();
    FileOutputStream out=null;
    BufferedWriter writer=null;
    try {
    /**
    * 得到FileOutputStream对象,
    * 第一个参数:指定的文件名;
    * 第二个参数:操作模式,一般有两种,MODE_APPEND:当指定的文件名存在时,所写入的内容追加到原来文件中,不会发生覆盖;不存在就会创建
    * MODE_PRIVATE:当指定的文件名存在时,会覆盖原来的,创建一个新的文件。
    
    */

out=openFileOutput("data", MODE_PRIVATE);
//得到缓存输出流的对象
writer=new BufferedWriter(new OutputStreamWriter(out));
//将数据写入流中
writer.write(content);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//在finally()语句中关闭流
if(writer!=null)
{
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
    }
    /**
     * 读取数据
     * 
     */
    public void getData(View view){
    FileInputStream in=null;
    BufferedReader reader=null;
    StringBuilder content=new StringBuilder();
    try {
    /**
    * 用openFileInput(),参数为文件名
    */
in=openFileInput("data");
if(in==null){
Toast.makeText(this, "无数据", Toast.LENGTH_SHORT).show();
return;
}
reader=new BufferedReader(new InputStreamReader(in));
String line=null;
while((line=reader.readLine())!=null){
content.append(line);
}

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(reader!=null){
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
    Toast.makeText(this, content.toString(), Toast.LENGTH_SHORT).show();
    }

}

四。运行效果如下:


猜你喜欢

转载自blog.csdn.net/wjlsxl_whb/article/details/77772973