【发布时间】:2014-01-10 06:02:46
【问题描述】:
我正在尝试围绕 Dart Streams。特别是这个example of the command line utility cat 有以下代码行:
Stream<List<int>> stream = new File(path).openRead();
// Transform the stream using a `StreamTransformer`. The transformers
// used here convert the data to UTF8 and split string values into
// individual lines.
return stream
.transform(UTF8.decoder)
.transform(const LineSplitter())
.listen((line) {
if (showLineNumbers) {
stdout.write('${lineNumber++} ');
}
stdout.writeln(line);
}).asFuture().catchError((_) => _handleError(path));
Stream<T>声明为Stream<List<int>>让我有点困惑。为什么不声明为Stream<int>。 List 类型如何使它与众不同。如果是 List,订阅者事件是否以某种方式缓冲?什么类型(如
<T>)被传递给第一个转换?是int还是List<int>?将什么类型传递给每个下一个转换以及决定它们的类型的因素。
此示例是否在将转换结果传递给下一个转换之前读取整个文件?如果是这样,是否有一个示例说明如何流式传输类似于此节点问题Parsing huge logfiles in Node.js - read in line-by-line
的非常大的文件
【问题讨论】:
标签: dart dart-async