文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行任何格式的格式化处理,所有数据都原封不动的保存到文件中,因而它比较适合用于存储一些简单的文本数据或二进制数据。
保存数据
Context类中提供一个openFileOutPut(),可以用于将数据存储到指定的文件。这个方法接收两个参数,第一个参数是文件名,该文件存储在Android Studio界面右下角的Device File Explorer,找到data/data/projectName/files,该文件就在files目录文件下。第二个参数是文件的操作模式,主要有两种模式可选,MODE_PRIVATE和MODE_APPEND。其中MODE_PRIVATE是默认的操作模式,表示当指定同样的文件名的时候,所写的内容将覆盖原文件的内容,而MODE_APPEND则表示如果该文件已存在,就往文件里面追加内容,不存在就创建新文件。
FileOutputStream out;
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();
}
}
读取数据
Context中提供一个openFileInput(),用于从文件中读取数据。这个方法只接收一个参数,即要读取的文件名。我们这里创建一个load方法用来读取一个已经存在的data文件,返回里面的内容。
private String load() {
FileInputStream in;
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();
}
另外补充两个方法,一个是EditText类的setSelection(),这个方法接收一个参数,可以将光标移动到文本的任意位置,通常指定文本的末尾位置以便继续输入。另外一个方法是TextUtils.isEmpty(),这份方法可以一次性进行两种空值判断。当传入的字符串等于null或者等于空字符串的时候,这个方法都会返回true。