2013-10-05 161 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