Spec-Zone.ru › Web APIs

DirectoryReaderSync

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

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

Интерфейс DirectoryReaderSync позволяет вам читать записи в каталоге.

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

Основные концепции

Перед вызовом единственного метода в этом интерфейсе, readEntries(), создайте объект DirectoryEntrySync. Но DirectoryEntrySync (так же как и FileEntrySync) — это не тип данных, который можно передавать между приложением, вызывающим функцию, и потоком Web Worker. Это не проблема, так как вам не нужно, чтобы основное приложение и поток-воркер видели один и тот же JavaScript-объект; вам нужно только, чтобы они имели доступ к тем же файлам. Вы можете сделать это, передав список filesystem: URL-адресов (которые просто строки) вместо списка записей. Вы также можете использовать filesystem: URL для поиска записи с помощью resolveLocalFileSystemURL(). Это позволит вам получить обратно объект DirectoryEntrySync (а также FileEntrySync).

Пример

В следующем фрагменте кода из HTML5Rocks (web.dev) мы создаем Web Worker и передаем данные из него в основное приложение.

// Taking care of the browser-specific prefixes.
window.resolveLocalFileSystemURL =
  window.resolveLocalFileSystemURL || window.webkitResolveLocalFileSystemURL;

// Create web workers
const worker = new Worker("worker.js");
worker.onmessage = (e) => {
  const urls = e.data.entries;
  urls.forEach((url) => {
    window.resolveLocalFileSystemURL(url, (fileEntry) => {
      // Print out file's name.
      console.log(fileEntry.name);
    });
  });
};

worker.postMessage({ cmd: "list" });

Следующий код worker.js получает содержимое каталога.

// worker.js

// Taking care of the browser-specific prefixes.
self.requestFileSystemSync =
  self.webkitRequestFileSystemSync || self.requestFileSystemSync;

// Global for holding the list of entry file system URLs.
const paths = [];

function getAllEntries(dirReader) {
  const entries = dirReader.readEntries();

  for (const entry of entries) {
    // Stash this entry's filesystem in URL
    paths.push(entry.toURL());

    // If this is a directory, traverse.
    if (entry.isDirectory) {
      getAllEntries(entry.createReader());
    }
  }
}

// Forward the error to main app.
function onError(e) {
  postMessage(`ERROR: ${e.toString()}`);
}

self.onmessage = (e) => {
  const cmd = e.data.cmd;

  // Ignore everything else except our 'list' command.
  if (!cmd || cmd !== "list") {
    return;
  }

  try {
    const fs = requestFileSystemSync(TEMPORARY, 1024 * 1024 /*1MB*/);

    getAllEntries(fs.root.createReader());

    self.postMessage({ entries: paths });
  } catch (e) {
    onError(e);
  }
};

Метод

readEntries()

Возвращает список записей из определенного каталога. Вызывайте этот метод до тех пор, пока не будет возвращен пустой массив.

Синтаксис

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

Нет.

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

Массив, содержащий FileEntrySync и DirectoryEntrySync.

Исключения

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

Исключение Описание
NOT_FOUND_ERR Каталог не существует.
INVALID_STATE_ERR Каталог был изменен с момента обработки первого вызова readEntries.
SECURITY_ERR Браузер определил, что доступ к метаданным небезопасен.

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

Эта функция больше не является частью каких-либо спецификаций. Она больше не проходит процесс стандартизации.

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
DirectoryReaderSync 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/DirectoryReaderSync

Spec-Zone.ru

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