文件存儲
阿新 • • 發佈:2017-07-10
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(); }
文件存儲