在Dart中,读取文件有两种常见的方式:使用 Stream 和使用 Future

使用 Stream 读取文件:

import 'dart:io';

void main() {
  Stream<List<int>> stream = File("example.txt").openRead();

  stream.listen((List<int> event) {
    // 处理文件内容
    print(event);
  });
}
  1. 异步处理: Stream 适用于处理大文件或需要异步处理的文件读取操作。它允许你通过监听事件的方式来处理文件内容,这在处理大型文件时可以提供更好的性能和响应性。
  2. 适用于大文件: Stream 适用于读取大文件,因为它可以逐块读取而不是一次性加载整个文件到内存中。
劣势:
  1. 相对复杂: 使用 Stream 读取文件相对于 Future 可能会显得稍微复杂一些,尤其是对于简单的文件读取操作。

 

 使用 Future 读取文件:

import 'dart:io';

void main() {
  Future<List<int>> future = File("example.txt").readAsBytes();

  future.then((List<int> content) {
    // 处理文件内容
    print(content);
  });
}

 

优势:
  1. 简单明了: Future 提供了更直观、更简单的方式来读取文件内容。适用于相对简单的文件读取场景。
  2. 适用于小文件: 对于小文件,一次性加载到内存中可能更为方便。
劣势:
  1. 不适用于大文件: 使用 Future 读取大文件可能会导致内存占用较高,不适用于处理大文件。