在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