FileSystemDirectoryHandle
Базовая версия 2023 *
Новое
С марта 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Интерфейс FileSystemDirectoryHandle API файловой системы предоставляет ссылку на каталог файловой системы.
К интерфейсу можно получить доступ через методы window.showDirectoryPicker(), StorageManager.getDirectory(), DataTransferItem.getAsFileSystemHandle() и FileSystemDirectoryHandle.getDirectoryHandle().
Свойства экземпляра
Наследует свойства от родительского класса FileSystemHandle.
Методы экземпляра
Наследует методы от родительского класса FileSystemHandle.
Обычные методы:
FileSystemDirectoryHandle.getDirectoryHandle()-
Возвращает
Promise, выполненный сFileSystemDirectoryHandleдля подкаталога с указанным именем в каталоге, на котором вызывается метод. FileSystemDirectoryHandle.getFileHandle()-
Возвращает
Promise, выполненный сFileSystemFileHandleдля файла с указанным именем в каталоге, на котором вызывается метод. FileSystemDirectoryHandle.removeEntry()-
Попытка асинхронного удаления записи, если в каталоге имеется файл или каталог с указанным именем.
FileSystemDirectoryHandle.resolve()-
Возвращает
Promise, выполненный с массивомArrayимён каталогов от родительского элемента до указанной дочерней записи, а имя дочерней записи — последним элементом массива.
Методы асинхронного итератора:
FileSystemDirectoryHandle.entries()-
Возвращает новый асинхронный итератор пар свойств объекта.
FileSystemDirectoryHandle.keys()-
Возвращает новый асинхронный итератор, содержащий ключи для каждого элемента в
FileSystemDirectoryHandle. FileSystemDirectoryHandle.values()-
Возвращает новый асинхронный итератор, содержащий значения для каждого индекса в объекте
FileSystemDirectoryHandle. FileSystemDirectoryHandle[Symbol.asyncIterator]()-
Возвращает новый асинхронный итератор пар свойств объекта.
Примеры
Возврат ссылки на каталог
В следующем примере возвращается ссылка на каталог с указанным именем; если каталог еще не существует, он создается.
const dirName = "directoryToGetName";
// assuming we have a directory handle: 'currentDirHandle'
const subDir = currentDirHandle.getDirectoryHandle(dirName, { create: true });
Возврат пути к файлу
Следующая асинхронная функция использует resolve() для поиска пути к выбранному файлу относительно указанной ссылки на каталог.
async function returnPathDirectories(directoryHandle) {
// Get a file handle by showing a file picker:
const handle = await self.showOpenFilePicker();
if (!handle) {
// User cancelled, or otherwise failed to open a file.
return;
}
// Check if handle exists inside our directory handle
const relativePaths = await directoryHandle.resolve(handle);
if (relativePath === null) {
// Not inside directory handle
} else {
// relativePath is an array of names, giving the relative path
for (const name of relativePaths) {
// log each entry
console.log(name);
}
}
}
Возврат ссылок на все файлы в каталоге
В следующем примере рекурсивно сканируется каталог для возврата объектов FileSystemFileHandle для каждого файла в этом каталоге:
async function* getFilesRecursively(entry) {
if (entry.kind === "file") {
const file = await entry.getFile();
if (file !== null) {
file.relativePath = getRelativePath(entry);
yield file;
}
} else if (entry.kind === "directory") {
for await (const handle of entry.values()) {
yield* getFilesRecursively(handle);
}
}
}
for await (const fileHandle of getFilesRecursively(directoryHandle)) {
console.log(fileHandle);
}
Спецификации
| Спецификация |
|---|
| Файловая система # api-filesystemdirectoryhandle |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
@@asyncIterator |
86 | 86 | 111 | 72 | 16.4 | 109 | 111 | 74 | 16.4 | 21.0 | 109 |
FileSystemDirectoryHandle |
86 | 86 | 111 | 72 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
entries |
86 | 86 | 111 | 72 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
getDirectoryHandle |
86 | 86 | 111 | 72 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
getFileHandle |
86 | 86 | 111 | 72 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
keys |
86 | 86 | 111 | 72 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
removeEntry |
86 | 86 | 111 | 72 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
resolve |
86 | 86 | 111 | 72 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
values |
86 | 86 | 111 | 72 | 15.2 | 109 | 111 | 74 | 15.2 | 21.0 | 109 |
См. также
© 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/FileSystemDirectoryHandle