在dart中,如何在浏览器中逐行读取文件?

时间:2014-05-27 15:41:29

标签: dart

在服务器端,有文件操作的readline,这对于大文件进程非常方便。但是,这不适用于浏览器端,如何在浏览器端逐行读取大文件?或者我怎么能上传一个不能放入RAM的超大文件?

1 个答案:

答案 0 :(得分:4)

有一个LineSplitter类似乎是为https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-convert.LineSplitter

设计的

你可以像

一样使用它
import 'dart:convert';
import 'dart:io';

void main() {
  new HttpClient().getUrl(
      Uri.parse('http://www.gutenberg.org/files/45776/45776-h/45776-h.htm'))
    .then((r) => r.close())
    .then((HttpClientResponse response) => handleResponse(response));
}

void handleResponse(HttpClientResponse response) {
  LineSplitter ls = new LineSplitter();
  ls.bind(UTF8.decoder.bind(response)).listen((e)=> print('=====${e}====='));
}

使用@lrn

建议的变换的替代解决方案
void main() {
  new HttpClient().getUrl(
      Uri.parse('http://www.gutenberg.org/files/45776/45776-h/45776-h.htm'))
    .then((r) => r.close())
    .then((HttpClientResponse response) {
      response.transform(UTF8.decoder)
        .transform(new LineSplitter())
        .listen((e) => print('====${e}===='));
  });
}

在浏览器中,我遗漏了将ProgressEvent转换为Stream<String>的内容 也许别人知道更多。 这似乎只有WebSockets支持,但不支持HttpRequest。