在Android开发中,我们经常需要将数据持久化存储,以便在应用关闭后仍然可以访问和使用这些数据。文件存储是一种常见且有效的方式,让我们可以在应用的私有目录中创建文件,并且可以在需要时读取和写入数据。
1. 内部存储
Android提供了一个私有的内部存储空间,可以用来存储应用的文件。默认情况下,其他应用无法访问这个内部存储目录,因此非常适合用来存储应用的私密数据。
1.1. 写入数据
要将数据写入内部存储,我们可以使用FileOutputStream
和OutputStreamWriter
类来实现。以下是一个示例:
String filename = "my_data.txt";
String data = "Hello, World!";
try {
FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
OutputStreamWriter writer = new OutputStreamWriter(fos);
writer.write(data);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
1.2. 读取数据
读取数据同样也很简单,我们可以使用FileInputStream
和InputStreamReader
类来实现。以下是一个示例:
String filename = "my_data.txt";
try {
FileInputStream fis = openFileInput(filename);
InputStreamReader reader = new InputStreamReader(fis);
StringBuilder stringBuilder = new StringBuilder();
int ch;
while ((ch = reader.read()) != -1) {
stringBuilder.append((char) ch);
}
reader.close();
String data = stringBuilder.toString();
// 处理读取到的数据
} catch (IOException e) {
e.printStackTrace();
}
2. 外部存储
Android还提供了一个外部存储空间,通常是SD卡或者其他存储设备。外部存储可用于存储一些非私密数据,例如照片、音频文件等。
2.1. 写入数据
要将数据写入外部存储,我们需要在AndroidManifest.xml文件中添加适当的权限声明,然后使用FileOutputStream
和OutputStreamWriter
类来实现。以下是一个示例:
String filename = "my_data.txt";
String data = "Hello, World!";
if (isExternalStorageWritable()) {
File file = new File(getExternalFilesDir(null), filename);
try {
FileOutputStream fos = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(fos);
writer.write(data);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
2.2. 读取数据
读取外部存储的数据也非常简单,我们可以使用FileInputStream
和InputStreamReader
类来实现。以下是一个示例:
String filename = "my_data.txt";
if (isExternalStorageReadable()) {
File file = new File(getExternalFilesDir(null), filename);
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader(fis);
StringBuilder stringBuilder = new StringBuilder();
int ch;
while ((ch = reader.read()) != -1) {
stringBuilder.append((char) ch);
}
reader.close();
String data = stringBuilder.toString();
// 处理读取到的数据
} catch (IOException e) {
e.printStackTrace();
}
}
结论
文件存储是Android中一种常见且有效的数据持久化方式。无论是使用内部存储还是外部存储,我们都可以很方便地读取和写入数据。只需要注意权限的声明和存储状态的判断,就能够实现数据的可靠存储和访问。
本文来自极简博客,作者:柔情密语酱,转载请注明原文链接:Android使用文件存储数据