1. 程式人生 > >文件存儲

文件存儲

string 數據存儲 覆蓋 context 文件存儲 中間 stringbu pre 追加

數據存儲在文件中,  

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

文件存儲