Android文件存储
介绍
在Android开发中,文件存储是一种常见的数据持久化方式。它允许应用程序将数据存储在设备的内部或外部存储中,以便在应用关闭或设备重启后仍然可以访问这些数据。文件存储适用于存储非结构化数据,如文本文件、图片、音频等。
本文将详细介绍如何在Android应用中使用文件存储,包括如何读写文件、存储位置的选择以及实际应用场景。
文件存储的基本概念
在Android中,文件存储主要分为两种类型:
- 内部存储:这是应用程序私有的存储空间,其他应用程序无法直接访问。存储在内部存储中的数据在应用卸载时会被删除。
- 外部存储:这是设备上的共享存储空间,可以被其他应用程序访问。外部存储通常用于存储用户生成的内容,如照片、视频等。
内部存储
内部存储是应用程序的私有存储空间,通常用于存储应用的敏感数据或临时文件。以下是如何在内部存储中读写文件的示例。
写入文件
String filename = "myfile.txt";
String fileContents = "Hello, World!";
try (FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE)) {
fos.write(fileContents.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
读取文件
String filename = "myfile.txt";
try (FileInputStream fis = openFileInput(filename)) {
InputStreamReader inputStreamReader = new InputStreamReader(fis);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
String fileContents = stringBuilder.toString();
Log.d("FileContents", fileContents);
} catch (IOException e) {
e.printStackTrace();
}
外部存储
外部存储是设备上的共享存储空间,通常用于存储用户生成的内容。在访问外部存储之前,需要确保应用具有适当的权限。
检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
写入文件
String filename = "myfile.txt";
String fileContents = "Hello, World!";
File file = new File(Environment.getExternalStorageDirectory(), filename);
try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(fileContents.getBytes());
} catch (IOException e) {
e.printStackTrace();
}