Android持久化資料儲存——File、SharedPreferences、SQLite
阿新 • • 發佈:2019-01-05
package com.example.mjon.myapplication;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class MainActivity extends AppCompatActivity {
private EditText ed;
private FileOutputStream fileOutputStream;
private BufferedWriter bufferedWriter;
private FileInputStream fileInputStream ;
private BufferedReader bufferedReader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed = (EditText) findViewById(R.id.ed);
}
/**
* 讀入資料
*/
@Override
protected void onResume() {
super .onResume();
try {
StringBuilder stringBuilder = new StringBuilder(); //用於存放取出的資料
fileInputStream = openFileInput("data"); //通過openFileInput()開啟檔案,返回一個檔案輸入流物件
bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream)); //藉助返回的檔案輸入流物件構建讀入流物件,接著構建出讀取緩衝物件
String temp = ""; //用於臨時儲存每行讀出的資料
while ((temp = bufferedReader.readLine()) != null) { //每讀取一行,追加儲存一次,直到讀取到末尾
stringBuilder.append(temp);
}
ed.setText(stringBuilder.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bufferedReader != null) { //如果讀取緩衝物件有資料則關閉
bufferedReader.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 寫出資料
*/
@Override
protected void onDestroy() {
super.onDestroy();
String temp = ed.getText().toString();
try {
fileOutputStream = openFileOutput("data", Context.MODE_PRIVATE); //通過openFileOutput()開啟或建立檔案,返回檔案輸出流物件
bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream)); //藉助返回的檔案輸出流物件構建出寫出流物件,再借助寫出流物件構建出寫出緩衝物件
bufferedWriter.write(temp); //通過寫出緩衝物件寫出資料
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bufferedWriter != null) { //如果寫出緩衝流中有資料則關閉
bufferedWriter.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}