文件存儲
文件存儲時Android中最基本的一種數據存儲方式,它對存儲內容不進行任何的格式化處理,所有的數據都是原封不動地保存到文件中,適合存儲一些文本數據或者二進制數據。
將數據存儲到文件中
首先需要得到一個附著在文件上的輸出流,Context類中提供了一個openFileOutput()方法,返回的輸出流用語將數據存儲到指定的文件中。該方法接收兩個參數:
文件名:創建文件時使用這個名稱。注意
指定的文件名不可以包含路徑,因為所有的文件都是默認存儲到/data/data/package name/files/目錄下
-
文件的操作模式:主要有兩種,MODE_PRIVATE和MODE_APPEND。
- MODE_PRIVATE:是默認操作模式,表示當指定的文件存在時,所寫入的內容將會覆蓋原文件中的內容。
- MODE_APPEND:表示如果該文件已經存在就繼續往里面寫內容,不存在久創建該文件。
另外還有兩種,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE表示允許其他應用對我們程序文件進行讀寫操作,已經廢棄。
openFileOutput()方法返回一個FileOutputStream對象,得到該對象就可以使用java流的方式將數據寫入文件中。
private void save(String input) {
FileOutputStream out = null;
BufferedWriter writer = null;
try {
try{
out = getActivity().openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(input);
}
finally {
if(writer != null)
writer.close();
if(out != null)
out.close();
}
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
從文件中讀取數據
類似的我們需要先得到一個附著在文件上的輸入流,Context類中提供了一個openFileInput()方法,返回的輸入流可以從文件中讀取數據。該方法只接收一個參數:
- 文件名:根據指定文件名系統會自動到/data/data/package name/files/目錄下去加載該文件,并返回一個FileInputStream對象。
得到了FileInputStream對象后,就可以使用java流的方式從文件中讀取數據。
private String load() {
FileInputStream in = null;
BufferedReader reader = null;
StringBuffer content = new StringBuffer();
try{
try{
in = getActivity().openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while((line = reader.readLine()) != null)
content.append(line + "\n");
}finally {
if(reader != null)
reader.close();
if(in != null)
in.close();
}
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
return content.toString();
}
實踐
File存儲.png