openRead 抽象方法
为该文件的全部内容创建一个新的独立 Stream。
如果存在 start
,将从字节数据偏移量 start
处读取文件。否则从开始(索引 0)读取。
如果存在 end
,则只读取到字节数据索引 end
为止。否则,直到文件末尾。
为了确保系统资源得到释放,必须将流读取到完成或取消流上的订阅。
如果 File 是一个 命名管道,则返回的 Stream 将等待管道的写入端关闭,然后才会发出“完成”信号。如果当打开管道时没有连接任何写入者,那么 Stream.listen 将等待一个写入者打开管道。
打开或读取文件时的错误将作为一个 FileSystemException 错误事件出现在返回的 Stream 上,然后 Stream 被关闭。例如
// This example will print the "Error reading file" message and the
// `await for` loop will complete normally, without seeing any data
// events.
final stream = File('does-not-exist')
.openRead()
.handleError((e) => print('Error reading file: $e'));
await for (final data in stream) {
print(data);
}
实现
Stream<List<int>> openRead([int? start, int? end]);