FileSystemDirectoryEntry: метод getDirectory()
Метод интерфейса FileSystemDirectoryEntry getDirectory() возвращает объект FileSystemDirectoryEntry, соответствующий каталогу, содержащемуся где-то в поддереве каталогов, укоренённом в каталоге, на котором он вызван.
Синтаксис
getDirectory() getDirectory(path) getDirectory(path, options) getDirectory(path, options, successCallback) getDirectory(path, options, successCallback, errorCallback)
Параметры
pathНеобязательный-
Строка, представляющая абсолютный путь или путь, относительный к каталогу, на котором вызывается метод, описывающая, какую запись каталога вернуть. Абсолютные пути могут быть недоступны по соображениям безопасности.
optionsНеобязательный-
Объект, позволяющий указать, создавать ли запись, если она отсутствует, и является ли ошибкой существование файла. Эти параметры в настоящее время не применимы в контексте веб-приложений. Более подробную информацию см. в разделе «параметр options».
successCallbackНеобязательный-
Метод, который вызывается после создания
FileSystemDirectoryEntry. Метод получает единственный параметр: объектFileSystemDirectoryEntry, представляющий каталог. errorCallbackНеобязательный-
Метод, вызываемый в случае возникновения ошибки. Принимает в качестве единственного входного параметра объект
DomException, описывающий произошедшую ошибку.
Параметр options
Объект параметра options принимает следующие параметры:
createНеобязательный-
Если это свойство имеет значение
true, и запрашиваемый каталог не существует, пользовательский агент должен создать его. По умолчанию значениеfalse. Родительский каталог должен уже существовать. exclusiveНеобязательный-
Если
true, и параметрcreateтакже имеет значениеtrue, каталог не должен существовать до вызова. Вместо этого он должен быть создан во время вызова. По умолчаниюfalse. Этот параметр игнорируется, еслиcreateимеет значениеfalse.
В таблице ниже описан результат каждой возможной комбинации этих флагов в зависимости от того, существует ли целевой путь к каталогу.
Параметр create | Параметр exclusive | Условие пути | Результат |
|---|---|---|---|
false | Игнорируется | Путь существует и является каталогом | Функция successCallback вызывается с объектом FileSystemDirectoryEntry. |
false | Игнорируется | Путь существует, но является файлом | Функция errorCallback вызывается с соответствующим кодом ошибки (если был предоставлен обратный вызов). |
true | false | Путь существует | Существующий каталог удаляется и заменяется новым, затем successCallback вызывается с объектом FileSystemDirectoryEntry. |
true | false | Путь не существует | Каталог создается, затем объект FileSystemDirectoryEntry передается в successCallback. |
true | true | Путь существует | Функция errorCallback вызывается с соответствующей ошибкой, например, FileError.PATH_EXISTS_ERR. |
true | true | Путь не существует | Каталог создается, затем объект FileSystemDirectoryEntry передается в successCallback. |
Возвращаемое значение
Пустое значение (undefined).
Исключения
-
NotFoundErrorDOMException -
Выбрасывается, если параметр
createне был указан (или был указан какfalse), и каталог не существует. -
SecurityErrorDOMException -
Выбрасывается, если запрос доступа к каталогу был отклонен по соображениям безопасности.
-
TypeMismatchErrorDOMException -
Выбрасывается, если указанный путь не является каталогом; скорее всего, это файл, но это может быть и неподдерживаемый дескриптор файла, например, канал; это в некоторой степени зависит от пользовательского агента.
Примеры
В этом примере представлена функция, задача которой — найти в каталоге данных приложения JSON-файл, содержащий словарь пользователя для указанного языка, а затем загрузить этот словарь.
let dictionary = null;
function loadDictionaryForLanguage(appDataDirEntry, lang) {
dictionary = null;
appDataDirEntry.getDirectory("Dictionaries", {}, (dirEntry) => {
dirEntry.getFile(`${lang}-dict.json`, {}, (fileEntry) => {
fileEntry.file((dictFile) => {
let reader = new FileReader();
reader.addEventListener("loadend", () => {
dictionary = JSON.parse(reader.result);
});
reader.readAsText(dictFile);
});
});
});
}
Функция loadDictionaryForLanguage() начинает с использования getDirectory() для получения объекта FileSystemDirectoryEntry, представляющего подпапку с именем «Dictionaries», расположенную внутри указанного каталога данных приложения. Обратный вызов успеха для этого принимает результирующий объект записи каталога и вызывает getFile() для получения объекта FileSystemFileEntry, представляющего файл словаря; обратный вызов успеха для этого, в свою очередь, создаёт новый объект FileReader и использует его для загрузки содержимого файла. После успешной загрузки (как показано событием loadend) загруженный текст передается в JSON.parse() для преобразования в объект JavaScript.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
getDirectory |
8 | 79 | Нет | 11.1 | 18 | 50В Firefox для Android, входным параметромerrorCallback является объект DOMException, а не FileError. |
14 | 11.3 | 1.0 | ≤37 | |
См. также
© 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/FileSystemDirectoryEntry/getDirectory