14

我正在尝试以 Dart 语言处理大型文本文件。这些文件的大小超过 100 MB。

我尝试了图书馆readAsLinesreadAsLinesSync方法。dart:io每次我用完内存时:Exhausted heap space

有没有办法像其他语言一样逐行或逐字节读取文件​​​​

4

2 回答 2

20

这应该以块的形式读取文件:

import 'dart:async';
import 'dart:io';
import 'dart:convert';

main() {
  var path = ...;
  new File(path)
    .openRead()
    .map(utf8.decode)
    .transform(new LineSplitter())
    .forEach((l) => print('line: $l'));
}

目前还没有太多关于此的文档。也许提交一个错误,要求更多文档。

于 2014-02-16T20:56:00.767 回答
8

在最新版本的 dart 中,UTF8.decoder 现在是 utf8.decoder:

import 'dart:async';
import 'dart:io';
import 'dart:convert';

main() {
  var path = ...;
  new File(path)
    .openRead()
    .transform(utf8.decoder)
    .transform(new LineSplitter())
    .forEach((l) => print('line: $l'));
}
于 2019-10-10T00:58:24.363 回答