Spec-Zone.ru › Web APIs

FileSystemDirectoryHandle

Базовая версия 2023 *
Новое

С марта 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, эта функция не будет работать на старых устройствах или браузерах.

* Некоторые части этой функции могут иметь различный уровень поддержки.

  • Узнать больше
  • Посмотреть полную совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Интерфейс FileSystemDirectoryHandle API файловой системы предоставляет ссылку на каталог файловой системы.

К интерфейсу можно получить доступ через методы window.showDirectoryPicker(), StorageManager.getDirectory(), DataTransferItem.getAsFileSystemHandle() и FileSystemDirectoryHandle.getDirectoryHandle().

FileSystemHandle FileSystemDirectoryHandle

Свойства экземпляра

Наследует свойства от родительского класса 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

См. также

  • 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/FileSystemDirectoryHandle

Spec-Zone.ru

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