File and Directory Entries API

Не стандартно

Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.

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

Поскольку это нестандартный API, спецификация которого в настоящее время не входит в стандарт, важно помнить, что не все браузеры реализуют его, а те, которые поддерживают, могут реализовывать только небольшие его части. Дополнительные сведения в разделе Browser compatibility 

Существуют два очень похожих API в зависимости от того, хотите ли вы асинхронного или синхронного поведения. Синхронный API предназначен для использования внутри Worker и будет возвращать желаемые значения. Асинхронный API не будет блокировать выполнение кода, а API не будет возвращать значения; вместо этого вам нужно будет предоставить колбэк-функцию для обработки одного или нескольких ответов.

Firefox реализация File System API очень ограничена: не поддерживается создание файлов. Доступ к файлам осуществляется только через <input> элемент (см. так же HTMLInputElement) или путём перетаскивания файла/папки (drag and drop). Firefox также не реализует синхронный API. Внимательно проверьте совместимость браузера для любой части API, которую вы используете. ( см. Поддержка File System API в Firefox)

Получение доступа к файловой системе

Есть два способа получить доступ к файловой системе, определённым в текущем проекте спецификации:

Асинхронный API

Асинхронный API следует использовать для большинства операций, чтобы доступ к файловой системе не блокировал весь браузер, если он используется в основном потоке. Он включает в себя следующие интерфейсы:

FileSystem (en-US)
Представляет файловую систему.
FileSystemEntry (en-US)
Базовый интерфейс, представляющий одну запись в файловой системе. Это реализуется другими интерфейсами, которые представляют файлы или каталоги.
FileSystemFileEntry (en-US)
Представляет отдельный файл в файловой системе.
FileSystemDirectoryEntry (en-US)
Представляет отдельный каталог в файловой системе.
FileSystemDirectoryReader (en-US)
Созданный путём вызова FileSystemDirectoryEntry.createReader() (en-US), этот интерфейс предоставляет функции, которые позволяют вам читать содержимое каталога.
FileSystemFlags (en-US)
Определяет набор значений, которые используются при указании флагов опций при вызове определённых методов в File System API.
FileError (en-US)
Представляет ошибку, которая возникает при вызовах асинхронной файловой системы.

Также есть две глобальные функции (которые в настоящее время не являются частью спецификации и реализуются только в Google Chrome). Они доступны внутри объекта Window и реализованы в LocalFileSystem (en-US): requestFileSystem() и resolveLocalFileSystemURL().

Синхронный API

Синхронный API следует использовать только в Worker-ах; эти вызовы блокируются до тех пор, пока не закончат своё выполнение, и просто возвращают результаты вместо использования колбэков. Использование их в основном потоке заблокирует браузер, что непослушно. В противном случае интерфейсы ниже отражают интерфейсы асинхронного API.

FileSystemSync (en-US)
Представляет файловую систему.
FileSystemEntrySync (en-US)
Базовый интерфейс, представляющий одну запись в файловой системе. Это реализуется другими интерфейсами, которые представляют файлы или каталоги. EntrySync (en-US)
FileSystemFileEntrySync
Представляет отдельный файл в файловой системе.
FileSystemDirectoryEntrySync
Представляет отдельный каталог в файловой системе.
FileSystemDirectoryReaderSync
Созданный путём вызова FileSystemDirectoryEntrySync.createReader(), этот интерфейс предоставляет функции, которые позволяют вам читать содержимое каталога.
FileException (en-US)
Представляет ошибку, которая возникает при вызовах синхронной файловой системы.

Также есть две глобальные функции (которые в настоящее время не являются частью спецификации и реализуются только в Google Chrome). Они доступны в объекте Worker и реализованы вLocalFileSystemSync (en-US): requestFileSystemSync() и resolveLocalFileSystemSyncURL().

Другие интерфейсы

LocalFileSystem (en-US)
Предоставляет вам доступ к изолированной файловой системе.
LocalFileSystemSync (en-US)
LockedFile (en-US)
Предоставляет инструменты для работы с данным файлом со всеми необходимыми блокировками.
Metadata (en-US)

Спецификации

Specification Status Comment
File and Directory Entries API Черновик Draft of proposed API

Этот API не имеет официальной спецификации W3C или WHATWG.

Совместимость с браузерами

BCD tables only load in the browser

BCD tables only load in the browser

Смотрите также