Поддерживает ли Dart стандарт W3C File API?

Я написал веб-приложение Dart, которое компилируется в Javascript (dart2js), которое я упаковываю в APK (PhoneGap) и запускаю как приложение для Android. Я хочу, чтобы мое приложение выполняло резервное копирование и восстановление данных из локальной файловой системы.

W3C имеет стандарт файлового API для файлового ввода-вывода в веб-браузере: http://www.w3.org/TR/FileAPI/#introduction.

На популярном обучающем веб-сайте HTML5 есть статья, показывающая, как использовать W3C File API: http://www.html5rocks.com/en/tutorials/file/dndfiles/

Я попытался использовать библиотеку Dart: io для записи в файл с веб-страницы, но получил эту ошибку:

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

Я не уверен, что вызвало эту ошибку. Возможно, dart:io не запускается в браузере. Возможно, dart:io имеет недокументированную зависимость от pubspec (я не видел ни одного примера dart:io, объявляющего свои зависимости).

Если вы знаете, как читать/записывать файлы в веб-браузере с помощью Dart, объясните, пожалуйста, как это сделать.

Спасибо


person devdanke    schedule 05.10.2013    source источник
comment
Dart:io действительно не работает в браузере. Из документации: Библиотека ввода-вывода используется для серверных приложений Dart, которые запускаются на автономной виртуальной машине Dart из командной строки. Эта библиотека не работает в браузерных приложениях.   -  person Christophe Herreman    schedule 05.10.2013
comment
Вы пробовали использовать классы в dart:html? Похоже, они все есть, и вы сможете использовать их так же, как в этой статье.   -  person Dennis Kaselow    schedule 05.10.2013


Ответы (1)


dart:io — это серверная библиотека, вы должны использовать Файл из dart:html.

person Alexandre Ardhuin    schedule 05.10.2013
comment
Спасибо за указание на классы файловой системы в dart:html. Я рад, что они там. К сожалению, их использование (например, new FileSystem().root.createFile(foo.txt)) приводит к срабатыванию привязки в Dartium. Если вам известен рабочий пример кода для чтения и записи файла, предоставьте ссылку. - person devdanke; 06.10.2013
comment
Я думаю, вам нужно получить FileSystem с помощью requestFileSystem. См. также Изучение API файловой системы. - person Alexandre Ardhuin; 06.10.2013
comment
Я попытался использовать Dart r27487 в Ubuntu 13.04, чтобы создать файл в Dartium и Firefox. Ни то, ни другое не сработало :-( Ошибка Dartium заключалась в том, что операция завершилась неудачно, потому что это привело бы к превышению квоты хранилища приложением, несмотря на вызов window.requestFileSystem() с аргументом размера до 100 КБ (что должно быть достаточно для создания пустой файл) Ошибка Firefox была TypeError: Receiver.webkitRequestFileSystem не является функцией. Я попробую еще раз через несколько недель с более новой версией Dart. - person devdanke; 08.10.2013