DirectoryReaderSync

Nicht standardisiert: Diese Funktion ist nicht standardisiert und befindet sich nicht auf dem Weg zur Standardisierung. Verwenden Sie sie nicht auf Produktionsseiten, die dem Web ausgesetzt sind: Sie funktioniert nicht für alle Benutzer. Es kann auch große Inkompatibilitäten zwischen Implementierungen geben, und das Verhalten kann sich in Zukunft ändern.

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.

Das DirectoryReaderSync-Interface ermöglicht das Lesen der Einträge in einem Verzeichnis.

Warnung: Dieses Interface ist veraltet und gehört nicht mehr zum Standard. Verwenden Sie es nicht mehr. Nutzen Sie stattdessen die File and Directory Entries API.

Grundlegende Konzepte

Bevor Sie die einzige Methode in diesem Interface aufrufen, readEntries(), erstellen Sie das DirectoryEntrySync-Objekt. Aber DirectoryEntrySync (ebenso wie FileEntrySync) ist kein Datentyp, den Sie zwischen einer aufrufenden Anwendung und einem Web Worker-Thread übergeben können. Das ist nicht weiter schlimm, da Sie nicht unbedingt dasselbe JavaScript-Objekt in der Hauptanwendung und im Worker-Thread sehen müssen; Sie müssen lediglich auf dieselben Dateien zugreifen. Das kann erreicht werden, indem Sie eine Liste von filesystem: URLs — die einfach Zeichenketten sind — anstelle einer Liste von Einträgen übergeben. Sie können die filesystem: URL auch verwenden, um den Eintrag mit solveLocalFileSystemURL() nachzuschlagen. Dadurch erhalten Sie wieder ein DirectoryEntrySync- (sowie FileEntrySync-) Objekt.

Beispiel

Im folgenden Code-Schnipsel von HTML5Rocks (web.dev), erstellen wir Web Workers und übergeben Daten daraus an die Hauptanwendung.

js
// 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" });

Das folgende ist der Code von worker.js, der den Inhalt des Verzeichnisses abruft.

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);
  }
};

Methode

readEntries()

Gibt eine Liste von Einträgen aus einem spezifischen Verzeichnis zurück. Rufen Sie diese Methode auf, bis ein leeres Array zurückgegeben wird.

Syntax

js
readEntries()
Parameter

Keine.

Rückgabewert

Array, das FileEntrySync und DirectoryEntrySync enthält.

Ausnahmen

Diese Methode kann eine DOMException mit den folgenden Codes auslösen:

Ausnahme Beschreibung
NOT_FOUND_ERR Das Verzeichnis existiert nicht.
INVALID_STATE_ERR Das Verzeichnis wurde seit dem ersten Aufruf von readEntries geändert.
SECURITY_ERR Der Browser hat festgestellt, dass es unsicher war, die Metadaten nachzuschlagen.

Spezifikationen

Diese Funktion ist nicht mehr Teil einer Spezifikation. Sie ist nicht mehr auf dem Weg, ein Standard zu werden.

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
DirectoryReaderSync
DeprecatedNon-standard

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.
Requires a vendor prefix or different name for use.

Siehe auch