Context
類提供了openFileOutput
方法用於將數據存儲到文件中。/data/data<packagename>/files/
目錄下面了。第二個參數時文件的操做模式,包括兩種MODE_PRIVATE
和MODE_APPEND
,前一個是默認,縮寫內容會覆蓋。後一個表示追加內容,不存在就建立文件。FileOutputStream
對象,獲得該對象以後,可使用流的方式寫入文件。如下是一段簡單的演示:public void save(){ String data = "Data to save"; FileOutputStream out = null; BufferedWriter writer = null; try{ out = openFileOutput("data",Context.MODE_PRIVATE); writer = new BufferedWrirter(new OutputStreamWriter(out)); writer.write(data); } catch (IOException e){ e.printStackTrace(); } finally { try{ if(writer != null){ writer.close(); } }catch(IOException e){ e.printStackTrace(); } } }
anctivity_main.xml
文件代碼<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <EditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Type something here" /> </LinearLayout>
MainActivity.java
文件package com.example.filepersistencetest; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.EditText; public class MainActivity extends Activity { private EditText edit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edit = (EditText)findViewById(R.id.edit); } @Override protected void onDestroy() { super.onDestroy(); String inputText = edit.getText().toString(); save(inputText); } public void save(String inputText) { FileOutputStream out = null; BufferedWriter writer = null; try{ out = openFileOutput("data",Context.MODE_PRIVATE); writer = new BufferedWriter(new OutputStreamWriter(out)); writer.write(inputText); } catch (IOException e){ e.printStackTrace(); } finally { try{ if(writer != null){ writer.close(); } }catch(IOException e){ e.printStackTrace(); } } } }
解析:咱們在主活動中獲取了EditText標籤的文本內容,保存在了edit變量中,而後重寫了onDestroy()方法,保證了在銷燬這個活動的時候,可以保證內容已經保存在APP中,save方法基本和咱們以前舉例的一致。java
那麼若是確認咱們已經保存了數據呢?
android
打開DDMS的File Explorer來查看一下,按圖示打開文件com.example.persistencetest/files/
目錄下面內容,而且處處,使用notepad++打開看一看,確實是咱們以前輸入的
git
openFileInput()
方法,用於從文件中讀取數據,參數只有一個即便文件名,固然也不須要路徑,由於android已經提早定義好了/data/data/<packagename>/files/
目錄下面,並返回一個FileInputStream
對象,演示一波public String load(){ FileInputStream in = null; BufferReader reader = null; StringBuilder content = new StringBuilder(); try { in = openFileInput("data"); reader = new BufferedReader(new InputStreamReader(in)); String line = ""; while((line=reader.readLine())!=null){ content.append(line); } }catch(IOException e){ e.printStackTrace(); }finally{ if(reader != null){ try{ reader.close(); }catch(IOException e){ e.printStackTrace(); } } } return content.toString(); }