Android13下适配getFilesDir()的文件存读方案及文件选择器推荐
访问getFilesDir()实现应用专属文件存读的最佳方案
核心逻辑
getFilesDir() 指向应用内部存储的私有目录,无需申请任何权限(包括Android 13及以上版本),只有当前应用可访问该目录下的文件,卸载应用时文件会被自动清理,完全适配你的需求。
文件写入实现
直接通过文件流完成写入操作,示例代码:
// 获取应用内部私有目录 File filesDir = getFilesDir(); // Fragment中使用 requireContext().getFilesDir() // 创建目标文件(文件名可自定义) File targetFile = new File(filesDir, "user_custom_file.txt"); try (BufferedWriter writer = new BufferedWriter(new FileWriter(targetFile))) { // 写入用户需要存储的内容 writer.write("用户自定义内容"); writer.flush(); } catch (IOException e) { e.printStackTrace(); // 处理写入异常,比如提示用户存储失败 }
文件读取实现
读取逻辑同样直接操作文件流,示例代码:
File filesDir = getFilesDir(); File targetFile = new File(filesDir, "user_custom_file.txt"); StringBuilder content = new StringBuilder(); if (targetFile.exists()) { try (BufferedReader reader = new BufferedReader(new FileReader(targetFile))) { String line; while ((line = reader.readLine()) != null) { content.append(line); } // 读取到的内容存储在content中,可按需处理 } catch (IOException e) { e.printStackTrace(); // 处理读取异常 } } else { // 文件不存在时的处理逻辑,比如提示用户无可用数据 }
额外提示
- 若需批量管理文件,可在
getFilesDir()下创建子目录,比如File subDir = new File(filesDir, "user_files");,调用subDir.mkdirs()确保目录存在后再操作文件 - 该目录空间受系统内部存储限制,避免存储过大文件;如果需要存储大文件,可考虑使用
getExternalFilesDir()(同样无需权限,属于应用专属外部存储,卸载应用时文件也会被删除)
内容的提问来源于stack exchange,提问作者bzalar
相关产品推荐
相关产品推荐

