HTML5 FileSystem API: невозможно использовать getFile (), если файл был удален за пределами API - PullRequest
1 голос
/ 17 августа 2011

Я использую HTML5 FileSystem API в расширении Chrome.

Существует маловероятный (но возможный) сценарий, в котором:

  1. Файл создан с использованием fileWriter.write()
  2. Пользователь переходит в свою папку «Данные пользователя Chrome»> папку «Файловая система» и удаляет созданный файл (с использованием своей операционной системы, , а не с использованием API-интерфейса FileSystem)
  3. Все последующие вызовы getFile() для этого файла вызывают FileError.NOT_FOUND_ERR в обработчике ошибок.

Похоже, что если файл удален вне API-интерфейса FileSystem, getFile() всегда выдает ошибку для этого файла, что препятствует работе любой функции обратного вызова, что означает, что я не могу использовать fileEntry.remove() или fileEntry.createWriter() для создайте новый файл с тем же именем.

Есть ли альтернативный способ удалить запись файла из логического индекса файловой системы?

1 Ответ

1 голос
/ 17 августа 2011

В Windows есть странное поведение для приложений / расширений Chrome. Дело в том, что если вы удалите файл вручную из каталога файловой системы приложения, вы не сможете создать новый с тем же именем.

Единственный обходной путь сейчас - это создать какой-то хэш домашнего каталога при первом вызове приложения. Затем вы должны записать его имя (скажем) в Local Storage и записать ваши файлы в этот каталог. Ваш хэш должен быть достаточно уникальным. В моем случае это текущая отметка времени объекта даты. Поэтому, когда пользователи снова удаляют и устанавливают ваше приложение / расширение, они не столкнутся с этой проблемой.

Это относится только к системам Windows. ОС Linux (и, конечно, ChromeOS) не имеют этой ошибки.

...