美文网首页Android练级塔@IT·互联网首页投稿(暂停使用,暂停投稿)
九.Android 数据持久化四种方法之一——文件保存

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

作者: KaelQ | 来源:发表于2016-08-07 21:27 被阅读226次

    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.日常福利

    Github源码

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/hmnksttx.html