如何从Dart VM程序中“读取”文件?

时间:2012-01-18 20:55:03

标签: dart

如何从Dart程序中“读取”文件?

http://api.dartlang.org/index.html

Dart将在客户端运行,因此应该允许将文件作为输入。

2 个答案:

答案 0 :(得分:4)

您可以在Dart的测试框架中找到文件的用法: status_file_parser.dart(搜索“文件”)。

简而言之:

  File file = new File(path);
  if (!file.existsSync()) <handle missing file>;
  InputStream file_stream = file.openInputStream();
  StringInputStream lines = new StringInputStream(file_stream);

  lines.lineHandler = () {
    String line;
    while ((line = lines.readLine()) != null) {
    ...
  };
  lines.closeHandler = () {
    ...
  };

请注意,API尚未最终确定,并且可能随时更改。

编辑:API已更改。见Introduction to new IO

答案 1 :(得分:0)

您的问题意味着您希望从客户端(即浏览器)执行此操作。 dart:io库仅适用于命令行上的独立VM。

如果您确实想从VM中读取文件,现在有一种更简单的方法:

import 'dart:io';

main() {
  var filename = new Options().script;
  var file = new File(filename);

  if (!file.existsSync()) {
    print("File $filename does not exist");
    return;
  }

  var contents = file.readAsStringSync();

  print(contents);
}

如果您不想在读取整个文件时阻止,可以使用返回Future的readAsString的异步版本:

  file.readAsString().then((contents) {
    print(contents);
  });