封装Android文件基本操作方法

时间:2022-06-23 14:38:23

Android最基本的数据存储方式,所有数据原封不动地保存至文件中,适合存储简单的文本数据或是二进制数据。
所有文件默认存储至/data/data/<包名>/files/目录下。
openFileOutput()第一个参数是文件名,文件创建的时候就使用该名称,不可包含路径(因为默认存储至上述路径下);第二个参数是文件操作模式,有 MODE_PRIVATE和 MODE_APPEND模式(另有MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE模式允许外部程序修改本程序的文件,不安全,已废弃)。

MODE_PRIVATE:默认模式,当表示指定同样文件名时,所写入的内容将覆盖原有内容。
MODE_APPEND:如果文件已存在就直接追加内容,否则创建新文件。

可以在DDMS的File Explorer视图中,进入/data/data/<包名>/files/目录中查看。

    // 向文件写数据,以Srting数据类型为例
public static void writeDataIntoFile(String dataToBeSaved) {

FileOutputStream fos = null;
BufferedWriter writer = null;

try {
fos = openFileOutput("data", Context.MODE_APPEND);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

writer = new BufferedWriter(new OutputStreamWriter(fos));

try {
writer.write(dataToBeSaved);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
    // 从文件读数据,以字符串形式返回
public static String readDataFromFile() {

FileInputStream fis = null;
BufferedReader reader = null;

try {
fis = openFileInput("data");
} catch (FileNotFoundException e) {
e.printStackTrace();
}

reader = new BufferedReader(new InputStreamReader(fis));

StringBuilder stringBuilder = new StringBuilder();
String line = "";

try {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

return stringBuilder.toString();
}