九.Android 数据持久化四种方法之一——文件保存

1.文件保存概述

  • Android允许使用文件对一些信息进行保存。
    文件存储在data/data/包名/files/目录下。

2.具体方法

2.1 写入文件

  • 关键代码
    Contex类中提供了openFileOutput()方法,
    openFileOutput(文件名,操作模式)
    文件名为保存文件的文件名。操作模式有MODE_PRIVATE和MODE_APPEND两种。
模式 作用
MODE_PRIVATE 如果没有就新建,如果有就覆盖其中内容
MODE_APPEND 如果没有就新建,如果有就追加在其后
  • FileOutputStream->OutputStreamWriter->BufferedWriter
    使用BufferedWirter的writer()方法写入数据,写入之后使用close()关闭。

2.2 读出文件

  • Contex类中提供了openFileInput()方法,
    openFileInput(文件名)
    文件名为保存文件的文件名。
  • FileInputStream->InputStreamReader->BufferedReader
    使用BufferedReader的readLine()方法一行一行的读入,读完后使用close()关闭,存入StringBuilder的实例化对象中,再使用toString()方法转化为String类型的数据。

3.例子

  • 覆盖写入文件代码:
public void outputFilePrivate() {
        FileOutputStream flieOS = null;
        BufferedWriter bfWriter = null;
        try {
            flieOS = openFileOutput("data2", Context.MODE_PRIVATE);
            bfWriter = new BufferedWriter(new OutputStreamWriter(flieOS));
            bfWriter.write(edtWrite.getText().toString());
            Toast.makeText(this, edtWrite.getText().toString(), Toast.LENGTH_SHORT).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bfWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  • 追加写入文件代码:
 public void outputFileAppend() {
        FileOutputStream flieOS = null;
        BufferedWriter bfWriter = null;
        try {
            flieOS = openFileOutput("data2", Context.MODE_APPEND);
            bfWriter = new BufferedWriter(new OutputStreamWriter(flieOS));
            bfWriter.write(edtWrite.getText().toString());
            Toast.makeText(this, edtWrite.getText().toString(), Toast.LENGTH_SHORT).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                bfWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  • 读出文件代码:
 public void inputFile() {
        FileInputStream fileIS = null;
        BufferedReader bfReader = null;
        try {
            fileIS = openFileInput("data2");
            bfReader = new BufferedReader(new InputStreamReader(fileIS));
            String text = bfReader.readLine();
            edtRead.setText(text);
            Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                bfReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

结果图如下:

  • 覆盖写入


    九.Android 数据持久化四种方法之一——文件保存_第1张图片
    覆盖写入
  • 读取文件


    九.Android 数据持久化四种方法之一——文件保存_第2张图片
    读取文件
  • 追加写入

九.Android 数据持久化四种方法之一——文件保存_第3张图片
追加写入
  • 读取文件


    九.Android 数据持久化四种方法之一——文件保存_第4张图片
    读取文件

4.日常福利

Github源码

你可能感兴趣的:(九.Android 数据持久化四种方法之一——文件保存)