十二.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();
            }
        }
    }

结果图如下:

  • 覆盖写入
    覆盖写入

  • 读取文件
    读取文件

  • 追加写入
    追加写入

  • 读取文件
    读取文件

4.日常福利

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值