openRead 抽象方法

Stream<List<int>> openRead(
  1. [int? start,
  2. int? end]
)

为该文件的全部内容创建一个新的独立 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]);