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

xiaoxiao2021-02-28  83

在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();     }

}

四。运行效果如下:

转载请注明原文地址: https://www.6miu.com/read-78602.html

最新回复(0)