在flutter应用程序中,我试图通过在其上打开流来一次读取一个较大的csv文件。问题是,当我尝试收听流时,该程序立即终止。没有引发任何错误,但控制台已打印“已退出”。
我要打开的文件位于我的资产文件夹中,并且在打开流之前,我已通过编程方式确认该文件确实存在。更改打开流的文件无济于事,同样的问题仍然存在。我还尝试按照Darts官方文档提供的不同方法(该代码已注释掉)来更改侦听流的方式,但结果仍然相同。
void trainDigits(){
List<List<List>> filters = createRandomFilter(4, 4, 1, -1, 1);
File file = new File("assets/digit_train_data.csv");
if(file.existsSync())print("EXISTS!");
Stream<List<int>> stream = file.openRead();
Stream lines = utf8.decoder.bind(stream).transform(LineSplitter());
/* alternative method of listening to the stream that also fails
try{
await for (String line in lines){
print(line);
}
}catch(e){
print("problem "+e);
}
*/
lines.listen((data){ //this is where the program exits
我希望程序能够侦听流或至少在流失败时抛出错误,但程序只会退出。
答案 0 :(得分:0)
没有更多信息很难,如果您可以发布更多信息会更好。
所以我想问题应该是,请检查以下两个步骤。
1.在pubspec.yaml
flutter:
assets:
- assets/digit_train_data.csv
2。您需要使用rootBundle来访问此csv文件,请参考文档https://flutter.dev/docs/development/ui/assets-and-images
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {
return await rootBundle.loadString('assets/digit_train_data.csv');
}