Flutter/Dart创建文件报错:‘Read-only file system’问题排查
Flutter创建文件提示Read-only file system问题解决
你直接用File('mycol.json').create()会尝试在应用的安装目录创建文件,而这个目录是系统保护的只读目录,所以触发了报错。不管是iOS还是Android,Flutter应用都只能在自己沙盒的可读写目录操作文件,比如文档目录、缓存目录。
解决步骤:
- 先添加
path_provider依赖(用来获取应用的可读写目录路径),在pubspec.yaml的dependencies下添加:path_provider: ^2.0.15 - 修改你的
FileManager类,先获取合法的可读写目录,再拼接文件路径:
import 'dart:convert'; import 'dart:io'; import 'package:path_provider/path_provider.dart'; class FileManager { Future<void> createFile() async { // 获取应用的文档目录(可读写) final directory = await getApplicationDocumentsDirectory(); // 拼接文件路径 final file = File('${directory.path}/mycol.json'); // 创建文件 await file.create(); } }
注意事项:
- 这个方法是异步的,所以要把
createFile改成Future<void>类型,调用的时候要用await - Android 10及以上、iOS不需要额外申请文件权限,因为访问的是应用自己的沙盒目录
内容的提问来源于stack exchange,提问作者Icaroto
相关产品推荐
相关产品推荐

