调用的输出
toString()
File对象上的路径不是可用于某些内容的路径。如果你看到你的代码,调用的结果
toString()
在你的
File
实际上是字符串:
File: 'C:\FlutterProjects\project\tmp\a.txt'
所以,你最终要做的是:
File("File: 'C:\FlutterProjects\project\tmp\a.txt'");
这会失败,因为这不是一个有效的路径,也不是你可以读取的内容。
而不是打电话
toString()
,你应该使用
.path
财产在
文件
对象。或者直接发送
文件
作为方法的论据:
import 'package:path/path.dart' as p;
import 'dart:io';
void main() async {
final inDir = p.join(Directory.current.path, 'tmp'); // should we rename this
var dir = Directory(inDir);
final List<FileSystemEntity> fileList = await dir.list().toList();
for (var file in fileList.whereType<File>()) {
print("Processing ${file.path}");
readFile(file);
}
}
void readFile(File file) {
final contents = file.readAsStringSync();
print(contents);
}
此外,我还修复了此代码中不必要的文件类型强制转换问题。如果你使用
whereType
,它实际上基于类型检查进行过滤,并返回正确类型的对象。