【问题标题】:Reading File in Dart在 Dart 中读取文件
【发布时间】:2026-02-17 11:25:01
【问题描述】:

我正在尝试在 Dartium 浏览器上使用 Dart 从机器读取文件(为此在我的桌面上制作了一个简单的 .txt 文件)。

我有一个输入字段,向它添加了一个侦听器,它的外观如下:

  void _onFileSelect(event) {
    dom.File file = _fileInput.files.item(0);

    dom.FileReader reader = new dom.FileReader();
    //reader.readAsBinaryString(file);

    reader.addEventListener('load', (event) {
      print(reader.result); // This is the line I am having the problem with.
    });

    reader.readAsText(file);
  }

当我选择文件时,我得到错误:

堆栈跟踪:0。函数:'Object.noSuchMethod' url:'bootstrap' line:717 col:3

在我使用内联注释标记的行上。

我还设置了一个脚本来执行带有所需标志的 Dartium:

#!/bin/sh
cd /opt/DartEditor/dart-sdk/chromium
./chrome.exe --allow-file-access-from-files $@

谁能给出问题所在的提示?

附:我正在使用 Ubuntu Precise x64。

【问题讨论】:

  • 好吧,我不明白。您想读取不在“服务器端”而是在客户端的文件? '''print(reader.result);''' 应该在哪里显示文本?我也是初学者,但是当我使用打印时,AFAIK 仅在 DartEditor 的控制台中打印文本。
  • 是的,我想读取本地文件。正如我所说,它位于我的桌面上。据我所知,打印会在日志中打印一条消息,无论它是什么。默认情况下,它将打印到 DartEditor 控制台,但如果您在浏览器中打开 Web 控制台,它将开始打印。我使用这段代码只是为了测试它是否可以读取文件,而貌似不能。

标签: dart dart-html dart-io


【解决方案1】:

抱歉,您不能在 Dartium 中使用 dart:io 库。这些库只能在命令行上的 Dart VM 上运行。

您可能希望使用 XMLHttpRequest 从 HTTP 服务器读取文件。

【讨论】: