文件存储不对存储的内容进行任何的格式化处理,所有数据都是原封不动的保存到文件当中,因而它比较适合用于存储一些简单的文本数据。
将数据存到文件中:Context类中提供了一个openFileOutput()方法,其中包含两个参数,第一个参数是文件名(可以不包括路径,都默认存储到data/data//files/目录下的),第二个参数是是文件的操作模式,主要有两种模式可供选择,MODE_PRIVATE(所写的内容会覆盖原文件内容)和MODE_APPEND(若已存在,往文件中追加内容,不存在就创建新文件);
从文件中读取数据:Context类中提供了openFileInput()方法,
其中只有一个参数就是文件名(也是到和文件存储相同的目录下);
综合代码:
布局:只有一个EditText即可,按back键则表示退出,则里面的内容会消失,这里用文件存储把内容保存:
MainActivity代码:
package com.example.snake.filesave;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class MainActivity extends AppCompatActivity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText =(EditText)findViewById(R.id.save_Text);
String inputText = load();
if(!TextUtils.isEmpty(inputText)){
editText.setText(inputText);
editText.setSelection(inputText.length());
Toast.makeText(this, "Restoring success", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
String input = editText.getText().toString();
save(input);
}
public String load(){
FileInputStream in = null;
BufferedReader 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();
}
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 {
if (writer != null) {
try {
writer.close();
} catch(IOException e){
e.printStackTrace();
}
}
}
}
}
这里我在活动快销毁的时候把EditText的内容保存到文件中,在活动开启的时候判断文件中是否有保存内容,若是有就读取放入EditText内