2013-10-05 123 views
2

我写了一个Dart web应用程序,编译为Javascript(dart2js),我在APK(PhoneGap)中打包并作为Android应用程序运行。我希望我的应用程序能够从本地文件系统备份和恢复其数据。Dart是否支持W3C File API标准?

W3C在Web浏览器中具有用于文件IO的File API标准: http://www.w3.org/TR/FileAPI/#introduction

一种流行的HTML5学习网站有展示如何使用W3C文件API的文章: http://www.html5rocks.com/en/tutorials/file/dndfiles/

我试图用飞镖的镖:IO库写入到从网页文件,但得到这个错误:

Failed to load a file dart:io 
Failed to load resource 
    dart:io 

我不确定是什么导致了这个错误。也许dart:io不会在浏览器中运行。也许dart:io有一个无证的pubspec依赖项(我没有看到任何dart:io声明其依赖项的示例)。

如果您知道如何使用Dart在Web浏览器中读取/写入文件,请解释如何做到这一点。

感谢

+0

Dart:io确实没有在浏览器中运行。从文档:“IO库用于Dart服务器应用程序,它可以从命令行运行在独立的Dart VM上,该库不适用于基于浏览器的应用程序。” –

+2

您是否尝试过使用dart中的类:html?看起来他们都在那里,你应该能够像在那篇文章中一样使用它们。 –

回答

4

dart:io服务器库,你必须使用Filedart:html

+0

感谢您指出dart:html中的文件系统类。我很高兴他们在那里。不幸的是,使用它们(例如新的FileSystem().root.createFile(“foo.txt”))会触发Dartium中的“Aw,snap”。如果您知道读取和写入文件的工作示例代码,请提供一个链接。 – devdanke

+0

我认为你必须使用['requestFileSystem'](http://api.dartlang.org/docs/releases/latest/dart_html/Window.html#requestFileSystem)获得'FileSystem'。另请参阅[探索文件系统API](http://www.html5rocks.com/en/tutorials/file/filesystem/)。 –

+0

我尝试在Ubuntu 13.04上使用Dart r27487,在Dartium和Firefox中创建一个文件。都没有工作:-(Dartium错误是“操作失败,因为它会导致应用程序超过其存储配额”,尽管调用window.requestFileSystem(),大小参数高达100K(这应该足以创建一个空文件)Firefox的错误是“TypeError:receiver.webkitRequestFileSystem不是函数”。我会在几周后再尝试使用更新的Dart版本。 – devdanke