文件存储
1、将数据存储到文件中
Context中有openFileOutPut方法,可将数据存到指定文件中,方法接收两个参数,一个是文件名,没有路径,因为自动存储到/data/data/<package name>/files/目录下的。第二个参数是文件的操作模式,主要是两种模式MODE_PRIVATE和MODE_APPEND。其中MODE_PRIVATE是默认的操作模式,表示有同样文件名的时候所写入的内容会覆盖原文件中的内容,而MODE_APPEND表示如果文件已经存在,则追加内容,不创建新文件。
openFileOutPut方法返回的是一个FileOutPutStream对象,得到这个对象之后就可以使用Java流的方式将数据写到文件中了。
public class MainActivity extends AppCompatActivity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.et_IO);
}
@Override
protected void onDestroy() {
super.onDestroy();
String inputText = editText.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();
}
}
}
}
查看保存的data.txt文件
可以发现EditText中输入的内容确实已经保存到文件中了
2、从文件中读取数据
public class MainActivity extends AppCompatActivity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.et_IO);
String inputText = load();
if (!TextUtils.isEmpty(inputText)){
editText.setText(inputText);
editText.setSelection(inputText.length());
Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show();
}
}
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();
}
}