File and Directory Entries API
==============================

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

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

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

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

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

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

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

* При обработке события `drop (en-US)` вы можете вызвать `DataTransferItem.webkitGetAsEntry()` (en-US) что бы получить `FileSystemEntry` (en-US) для "брошенного" элемента. Если результат не `null`, то это брошенный файл или каталог, и вы можете использовать вызовы файловой системы для работы с ним.
* Свойство `HTMLInputElement.webkitEntries` (en-US) позволяет получить объект `FileSystemFileEntry` (en-US) для выбранного файла, но только если они перетаскиваются в средство выбора файлов ( баг 1326031 ). Если `HTMLInputElement.webkitdirectory` (en-US) является `true`, то `<input>` работает для выбора директорий, и вы можете получить объект `FileSystemDirectoryEntry` (en-US) для каждой выбранной директории.
Асинхронный 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`

Представляет ошибку, которая возникает при вызовах асинхронной файловой системы.

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

Синхронный API
--------------

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

`FileSystemSync` (en-US)

Представляет файловую систему.

`FileSystemEntrySync` (en-US)

Базовый интерфейс, представляющий одну запись в файловой системе. Это реализуется другими интерфейсами, которые представляют файлы или каталоги. `EntrySync`

`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)

Предоставляет инструменты для работы с данным файлом со всеми необходимыми блокировками.

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

| Specification |
| --- |
| File and Directory Entries API # api-domfilesystem |

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

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

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

* Introduction to the File and Directory Entries API
* File and Directory Entries API support in Firefox (en-US)