Android學習筆記——文件存儲
實現在編輯框輸入信息,當destory該activity時,把用戶輸入的內容以文件形式儲存起來,當再次打開該應用時,讀取文件,之前輸入過的內容就會重新顯示出來 。
代碼
activity_main.xml
<RelativeLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="cn.yimispace.filepersistencetest.MainActivity" >
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Type something here" />
</RelativeLayout>
MainActivity.java
package cn.yimispace.filepersistencetest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.EditText;
import android.widget.Toast;
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);
String inputText = load();
if(!TextUtils.isEmpty(inputText)){
edit.setText(inputText); //將內容填充到編輯框內
edit.setSelection(inputText.length()); //將光標移動到文本末尾位置
Toast.makeText(this, "Restoring succeeded", Toast.LENGTH_SHORT).show();
}
}
/**
* 加載已存儲的文件內容
* @return
*/
public String load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data"); //打開名爲"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();
}
@Override
protected void onDestroy() {
super.onDestroy();
String inputText = edit.getText().toString();
save(inputText); //銷燬前對輸入編輯框的數據inputText進行保存
}
/**
* 文件存儲
* @param inputText
*/
public void save(String inputText) {
FileOutputStream out = null;
BufferedWriter writer = null;
try {
/**
* openFileOutput
* 第一個參數:要用於存儲的文件名
* 第二個參數:文件的操作模式,
* MODE_PRIVATE表示若已有同名文件則覆蓋原文件內容;
* MODE_APPEND表示若已有同名文件則在文件內追加內容。
* 若無同名文件則會新建此文件。
*/
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(inputText); //把編輯框內容寫入文件"data"中
} catch(IOException e){
e.printStackTrace();
} finally {
try {
if(writer!=null){
writer.close();
}
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
效果圖
編輯框輸入界面
輸入數據退出應用後,在DDMS裏/data/data/[packagename]/files/目錄下尋找生成的”data”文件
你可以導出文件並用記事本查看內容