Spec-Zone.ru › Web APIs

DirectoryEntrySync

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

Устаревший: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут её всё ещё поддерживать, она, возможно, уже удалена из соответствующих веб-стандартов, может быть в процессе удаления или сохранена только для совместимости. Избегайте её использования и, по возможности, обновите существующий код; см. таблицу совместимости внизу этой страницы для принятия решения. Помните, что эта функция может перестать работать в любое время.

Интерфейс DirectoryEntrySync представляет собой директорию в файловой системе. Он включает методы для создания, чтения, поиска и рекурсивного удаления файлов в директории.

Предупреждение: Этот интерфейс устарел и больше не соответствует стандарту. Не используйте его больше. Используйте API файлов и элементов каталогов вместо этого.

Основные понятия

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

Пример

Метод getFile() возвращает FileEntrySync, который представляет собой файл в файловой системе. Следующий код создаёт пустой файл с именем logs.txt в корневой директории.

const fileEntry = fs.root.getFile("logs.txt", { create: true });

Метод getDirectory() возвращает DirectoryEntrySync, который представляет собой файл в файловой системе. Следующий код создаёт новую директорию с именем project_dir в корневой директории.

const dirEntry = fs.root.getDirectory("project_dir", { create: true });

Обзор методов

  • createReader()
  • getFile()
  • getDirectory()
  • removeRecursively()

Методы экземпляра

createReader()

Создаёт новый DirectoryReaderSync для чтения элементов из этой директории.

Синтаксис

createReader()
Параметры

Нет.

Возвращаемое значение
DirectoryReaderSync

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

Исключения

Этот метод может вызвать исключение DOMException со следующими кодами:

Исключение Описание
NOT_FOUND_ERR Директория не существует.
SECURITY_ERR Браузер определил, что безопасный доступ к метаданным невозможен. [ todo: Объяснить почему ]

getFile()

В зависимости от настройки параметра options, метод либо создаёт файл, либо ищет существующий.

Синтаксис

getFile(path)
getFile(path, options)
Параметры
path

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

options

(необязательно) Объект, описывающий поведение метода. Если файл не существует, он создаётся.

Объект Условие Результат
create: true
exclusive: true
Путь уже существует Выбрасывается ошибка.
create: true
exclusive: false
Путь не существует и другие ошибки не возникают Файл создаётся. Если файл уже существует, ошибка не возникает.
create: false
(exclusive игнорируется)
Путь существует Возвращается файл.
create: false
(exclusive игнорируется)
Путь не существует Выбрасывается ошибка.
create: false
(exclusive игнорируется)
Путь существует, но это директория Выбрасывается ошибка.
Возвращаемое значение
FileEntrySync

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

Исключения

Этот метод может вызвать исключение DOMException со следующими кодами:

Исключение Описание
ENCODING_ERR Указанный путь некорректен.
NOT_FOUND_ERR Путь был структурно корректным, но ссылается на ресурс, которого нет.
NO_MODIFICATION_ALLOWED_ERR Проблема с разрешениями. Указанный каталог или файл недоступен для записи.
PATH_EXISTS_ERR Файл уже существует. Невозможно создать другой с тем же путём.
QUOTA_EXCEEDED_ERROR Операция привела бы к превышению квоты хранилища.
SECURITY_ERR Приложению нет разрешения на доступ к элементу, на который указывает путь. [ todo: Объяснить почему ]
TYPE_MISMATCH_ERR Указанный путь существует, но это не каталог.

getDirectory()

Создаёт или находит директорию. Метод похож на getFile() с передачей DirectoryEntrySync.

Синтаксис

getDirectory(path)
getDirectory(path, options)
Параметры
path

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

options

(необязательно) Объект, описывающий поведение метода, если файл не существует.

Объект Условие Результат
create: true
exclusive: true
Путь уже существует Выбрасывается ошибка.
create: true
exclusive: false
Путь не существует и другие ошибки не возникают Создаётся директория. Если файл уже существует, ошибка не возникает.
create: false
(exclusive игнорируется)
Путь существует Возвращается директория.
create: false
(exclusive игнорируется)
Путь не существует Выбрасывается ошибка.
create: false
(exclusive игнорируется)
Путь существует, но это директория Выбрасывается ошибка.
Возвращаемое значение
DirectoryEntrySync

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

Исключения

Этот метод может вызвать исключение DOMException со следующими кодами:

Исключение Описание
ENCODING_ERR Указанный путь некорректен.
NOT_FOUND_ERR Путь был структурно корректным, но ссылается на ресурс, которого нет.
NO_MODIFICATION_ALLOWED_ERR Проблема с разрешениями. Указанный каталог или файл недоступен для записи.
PATH_EXISTS_ERR Файл уже существует. Невозможно создать другой с тем же путём.
QUOTA_EXCEEDED_ERROR Операция привела бы к превышению квоты хранилища.
SECURITY_ERR Приложению нет разрешения на доступ к элементу, на который указывает путь. [ todo: Объяснить почему ]
TYPE_MISMATCH_ERR Указанный путь существует, но это не каталог.

removeRecursively()

Удаляет директорию и всё её содержимое. Корневую директорию файловой системы удалить нельзя.

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

Синтаксис

removeRecursively()
Параметры

Нет.

Значение возврата
undefined
Исключения

Этот метод может вызвать DOMException с следующими кодами:

Исключение Описание
NOT_FOUND_ERR Целевая директория не существует.
INVALID_STATE_ERR Эта директория больше недействительна по какой-либо причине, кроме удаления.

[todo: Уточнить]

NO_MODIFICATION_ALLOWED_ERR Один из следующих элементов не является доступным для записи: директория, её родительская директория и часть содержимого директории.
SECURITY_ERR Приложению не разрешено получить доступ к целевой директории, её родительской директории или части её содержимого.

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

Эта функция не входит в состав текущих спецификаций. Она больше не находится на пути к стандартизации. Используйте API элементов файлов и каталогов вместо этого.

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
DirectoryEntrySync 13 79 Нет Нет Нет 18 Нет Нет Нет 1.0 37

См. также

  • API элементов файлов и каталогов
  • Введение в API элементов файлов и каталогов

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/DirectoryEntrySync

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API