文件存储

Posted on 2017-07-10 19:55  番茄番茄  阅读(172)  评论(0编辑  收藏  举报

数据存储在文件中,  

  Context类提供的一个openFileOutPut()方法,可以存储在文件中,该方法接受两个参数,第一个参数是存储的文件名称,第二个参数是文件的操作模式,MODE_PRIVATE是默认的操作模式,意思是指定相同名字的文件会覆盖之前的,MODE_APPEND是在文件内容的后面追加内容。

  openFileOutput方法返回的是一个FileOutputStream 对象,无法直接写入文件,但是BufferedWriter 对象有写入方法,但是该类只接受write类,所以要new 一个OutputStreamWriter对象,里面在放一个FileOutputStream对象。然后调用BufferedWriter 类的write()方法,将数据写入文件。

在数据流交互的时候会有异常,记住要放在try/catch块里面。

 public void save(String input) {
        FileOutputStream out;
        BufferedWriter bufferedWriter = null;
        try {
            out = openFileOutput("data", Context.MODE_PRIVATE);
            bufferedWriter = new BufferedWriter(new OutputStreamWriter(out));
            bufferedWriter.write(input);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bufferedWriter != null)
                    bufferedWriter.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

以上是将数据存储在文件中,所以有存就有读。读取文件的数据和存储数据相反,一个output 一个input。Context还是提供了openFileInput()方法,返回类型还是FileInputStream ,不能直接读取,还是BufferedReader类有readLine()方法读取,所以FileInputStream类要向BufferReader类转化,就要利用中间类(InputStreamReader),该中间类 既可以接受FielInputStream对象,又可以作为参数向BufferedReader类传递,BufferReader 对象创建成功,就可以调用readLine(),读取数据并且可以存储在 StringBuilder 的对象中,可以直接String对象获取存储信息。

 

public String  Read() {
        FileInputStream inputStream;
        BufferedReader bufferedReader = null;
        StringBuilder stringBuilder = new StringBuilder();
        try {
            inputStream = openFileInput("data");
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                stringBuilder.append(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (bufferedReader != null)
                    bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return stringBuilder.toString().trim();
    }