尝试在 Flutter 中创建一个新的文本文件
Trying to create a new text file in Flutter
我正在尝试创建一个新文件并在 Flutter 中写入它,但我收到一条错误消息:
[错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:FileSystemException:无法创建文件,路径 = '/data/user/0/com.micharski.d_ball/app_flutter/levels/level101.json ' (OS 错误:没有那个文件或目录,errno = 2)
这是我的代码(我使用的是 path_provider 插件):
class LevelFactory {
Level level;
File levelFile;
Future<File> _createLevelFile() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
File file = File('levels/level101.json');
return file.create();
}
Future<void> createLevel() async {
if(level != null){
level = null;
}
levelFile = await _createLevelFile();
print(levelFile);
}
}
驱动程序内部class:
var customLvl = new LevelFactory();
customLvl.createLevel();
出于调试目的,我将其添加到 _createLevelFile():
Directory dir2 = Directory('$appDocPath/levels');
print('DIR2 PATH: ${dir2.absolute}');
我现在的输出是这样的:
I/flutter ( 7990): DIR2 PATH: Directory: '/data/user/0/com.micharski.d_ball/app_flutter/levels'
E/flutter ( 7990): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: FileSystemException: Cannot create file, path = '/data/user/0/com.micharski.d_ball/app_flutter/levels/level101.json' (OS Error: No such file or directory, errno = 2)
Flutter 中的文件路径不能是相对的。移动操作系统会将 "levels/level101.json"
之类的路径解释为无效路径或指向您的应用无权访问的位置的路径。您需要使用像 path_provider
这样的插件来获取应用程序本地数据文件夹的路径,然后从中构建绝对路径。
import 'package:path_provider/path_provider.dart';
Future<File> _createLevelFile() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
File file = File('$appDocPath/levels/level101.json');
return await file.create();
}
我正在尝试创建一个新文件并在 Flutter 中写入它,但我收到一条错误消息: [错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:FileSystemException:无法创建文件,路径 = '/data/user/0/com.micharski.d_ball/app_flutter/levels/level101.json ' (OS 错误:没有那个文件或目录,errno = 2)
这是我的代码(我使用的是 path_provider 插件):
class LevelFactory {
Level level;
File levelFile;
Future<File> _createLevelFile() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
File file = File('levels/level101.json');
return file.create();
}
Future<void> createLevel() async {
if(level != null){
level = null;
}
levelFile = await _createLevelFile();
print(levelFile);
}
}
驱动程序内部class:
var customLvl = new LevelFactory();
customLvl.createLevel();
出于调试目的,我将其添加到 _createLevelFile():
Directory dir2 = Directory('$appDocPath/levels');
print('DIR2 PATH: ${dir2.absolute}');
我现在的输出是这样的:
I/flutter ( 7990): DIR2 PATH: Directory: '/data/user/0/com.micharski.d_ball/app_flutter/levels'
E/flutter ( 7990): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: FileSystemException: Cannot create file, path = '/data/user/0/com.micharski.d_ball/app_flutter/levels/level101.json' (OS Error: No such file or directory, errno = 2)
Flutter 中的文件路径不能是相对的。移动操作系统会将 "levels/level101.json"
之类的路径解释为无效路径或指向您的应用无权访问的位置的路径。您需要使用像 path_provider
这样的插件来获取应用程序本地数据文件夹的路径,然后从中构建绝对路径。
import 'package:path_provider/path_provider.dart';
Future<File> _createLevelFile() async {
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
File file = File('$appDocPath/levels/level101.json');
return await file.create();
}