在dart中逐行读取文件

Mar*_*nda 5 dart dart-io

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

我试过readAsLines和库的readAsLinesSync方法dart:io.每次我的内存耗尽:Exhausted heap space.

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

Gre*_*owe 9

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

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'));
}
Run Code Online (Sandbox Code Playgroud)

目前还没有太多关于此的文档.也许提交一个要求更多文档的bug.


Bre*_*ton 6

在最新版本的 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'));
}
Run Code Online (Sandbox Code Playgroud)

  • 赞成,因为礼仪通常是不要修改其他人答案中的代码,尽管修改其他内容通常没问题。然而,这可能只是答案下方的评论。 (6认同)