android 开发 文件读写应用案例分析


在Android开发中,文件读写是常见的功能之一,通常用于保存用户的偏好设置、缓存数据、日志文件等。下面我将通过一个简单的案例分析来展示如何在Android应用中实现文件读写操作。

### 案例分析:保存用户笔记

假设我们正在开发一个笔记应用,用户可以在应用中创建和保存笔记。这些笔记需要被保存到设备的存储中,以便用户下次打开应用时能够继续查看或编辑。

#### 1. 获取文件存储权限

在Android 6.0(API 级别 23)及以上,需要在运行时请求存储权限。在`AndroidManifest.xml`中添加以下权限声明:


<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

注意:从Android 10(API 级别 29)开始,推荐使用分区存储(Scoped Storage),这要求使用MediaStore API或文件访问框架(Storage Access Framework, SAF)来访问外部存储。但这里为了简化说明,我们仍使用传统方式。

#### 2. 编写文件写入代码


public void saveNote(String fileName, String content) {
    FileOutputStream fos = null;
    try {
        // 获取外部存储路径,这里以应用专属存储为例
        File dir = getExternalFilesDir(null);
        File file = new File(dir, fileName);

        // 创建文件输出流
        fos = new FileOutputStream(file);

        // 写入内容
        fos.write(content.getBytes());

        // 刷新并关闭流
        fos.flush();
        fos.close();

        // 可以在这里添加成功保存的提示
    } catch (IOException e) {
        e.printStackTrace();
        // 处理异常,如显示错误信息
    }
}

#### 3. 编写文件读取代码


public String readNote(String fileName) {
    FileInputStream fis = null;
    StringBuilder sb = new StringBuilder();
    try {
        // 获取外部存储路径,同样以应用专属存储为例
        File dir = getExternalFilesDir(null);
        File file = new File(dir, fileName);

        // 创建文件输入流
        fis = new FileInputStream(file);

        // 读取内容
        int c;
        while ((c = fis.read()) != -1) {
            sb.append((char) c);
        }

        // 关闭流
        fis.close();

        // 返回读取的内容
        return sb.toString();
    } catch (IOException e) {
        e.printStackTrace();
        // 处理异常,如返回空字符串或显示错误信息
        return "";
    }
}

#### 4. 注意事项

- 在实际应用中,应考虑文件存在性检查、异常处理等安全问题。

- 对于大文件读写,建议使用BufferedReader/BufferedWriter等缓冲类以提高效率。

- 从Android 10开始,建议使用分区存储(Scoped Storage)来访问外部存储,这有助于保护用户隐私和数据安全。

以上就是一个简单的Android文件读写应用案例分析。通过这个例子,你可以看到如何在Android应用中实现基本的文件读写操作。