zac*_*ack 7 android dart flutter
我.txt在 Flutter 项目的文件夹资产中有一个文件,当应用程序在设备上打开时,SQFlite会创建一个数据库,并且应该从该文件行读取以将它们插入到数据库中。我需要阅读.txt文件的每一行并将它们添加到List<String>这样的:
List<String> _list = await new File('$dir/assets/file.txt').readAsLines();
Run Code Online (Sandbox Code Playgroud)
我尝试使用rootBundle但我无法将结果转换为 aFile并尝试像这样直接打开文件:
String dir = (await getApplicationDocumentsDirectory()).path;
Run Code Online (Sandbox Code Playgroud)
我总是找不到文件并收到错误消息。
var byte = await rootBundle.load('assets/bot.txt'); // Can't convert it to file
String dir = (await getApplicationDocumentsDirectory()).path;
List<String> _list = await new File('$dir/assets/file.txt').readAsLines(); // Error
error FileSystemException: Cannot open file, path = '/data/user/0/com.example.animationexp/app_flutter/assets/file.txt' (OS Error: No such file or directory, errno = 2) during open, closing...
Run Code Online (Sandbox Code Playgroud)
有没有办法让我打开和阅读这个文件?
它不起作用,因为您只是假设您的assets目录位于ApplicationDocumentsDirectory,然后您加入了两个目录并在不存在的路径中查找文件。
相反,您应该将文件以已知路径保存到磁盘,然后File从该路径获取:
Future<List<String>> getFileLines() async {
final data = await rootBundle.load('assets/bot.txt');
final directory = (await getTemporaryDirectory()).path;
final file = await writeToFile(data, '$directory/bot.txt');
return await file.readAsLines();
}
Future<File> writeToFile(ByteData data, String path) {
return File(path).writeAsBytes(data.buffer.asUint8List(
data.offsetInBytes,
data.lengthInBytes,
));
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您的文件只是一个简单的文本文件,您应该尝试使用Julien Lachal 的方法。请记住,rootBundle.loadString()这不适用于大多数文件格式。
声明文件后,pubspec.yml您可以使用以下命令简单地获取内容:
String fileText = await rootBundle.loadString('assets/file.txt');
print(fileText);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6199 次 |
| 最近记录: |