⚡ Sangsakala Proxy 🏠 Home

Dieser Inhalt wurde automatisch aus dem Englischen ĂĽbersetzt, und kann Fehler enthalten. Erfahre mehr ĂĽber dieses Experiment.

View in English Always switch to English

FileSystemDirectoryHandle

Baseline
Weitgehend verfĂĽgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2023 browserübergreifend verfügbar.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstĂĽtzenden Browsern verfĂĽgbar.

Hinweis: Diese Funktion ist in Web Workers verfĂĽgbar.

Die FileSystemDirectoryHandle-Schnittstelle der File System API bietet einen Zugriffspunkt zu einem Dateisystemverzeichnis.

Die Schnittstelle kann ĂĽber die Methoden window.showDirectoryPicker(), StorageManager.getDirectory(), DataTransferItem.getAsFileSystemHandle() und FileSystemDirectoryHandle.getDirectoryHandle() aufgerufen werden.

FileSystemHandle FileSystemDirectoryHandle

Instanz-Eigenschaften

Erbt Eigenschaften von seinem Elternteil, FileSystemHandle.

Instanz-Methoden

Erbt Methoden von seinem Elternteil, FileSystemHandle.

Reguläre Methoden:

FileSystemDirectoryHandle.getDirectoryHandle()

Gibt ein Promise zurĂĽck, das mit einem FileSystemDirectoryHandle fĂĽr ein Unterverzeichnis mit dem angegebenen Namen, innerhalb des Verzeichnisses, auf dem die Methode aufgerufen wird, erfĂĽllt wird.

FileSystemDirectoryHandle.getFileHandle()

Gibt ein Promise zurĂĽck, das mit einem FileSystemFileHandle fĂĽr eine Datei mit dem angegebenen Namen, innerhalb des Verzeichnisses, auf dem die Methode aufgerufen wird, erfĂĽllt wird.

FileSystemDirectoryHandle.removeEntry()

Versucht, asynchron einen Eintrag zu entfernen, wenn das Verzeichnis-Handle eine Datei oder ein Verzeichnis mit dem angegebenen Namen enthält.

FileSystemDirectoryHandle.resolve()

Gibt ein Promise zurĂĽck, das mit einem Array von Verzeichnisnamen vom ĂĽbergeordneten Handle zum angegebenen Kindeintrag erfĂĽllt wird, wobei der Name des Kindeintrags das letzte Array-Element ist.

Asynchroner Iterator Methoden:

FileSystemDirectoryHandle.entries()

Gibt einen neuen asynchronen Iterator der eigenen aufzählbaren Eigenschaften [key, value] Paare eines gegebenen Objekts zurück.

FileSystemDirectoryHandle.keys()

Gibt einen neuen asynchronen Iterator zurück, der die Schlüssel für jedes Element in FileSystemDirectoryHandle enthält.

FileSystemDirectoryHandle.values()

Gibt einen neuen asynchronen Iterator zurück, der die Werte für jeden Index im FileSystemDirectoryHandle-Objekt enthält.

FileSystemDirectoryHandle[Symbol.asyncIterator]()

Gibt einen neuen asynchronen Iterator der eigenen aufzählbaren Eigenschaften [key, value] Paare eines gegebenen Objekts zurück.

Beispiele

Verzeichnis-Handle zurĂĽckgeben

Das folgende Beispiel gibt ein Verzeichnis-Handle mit dem angegebenen Namen zurĂĽck; falls das Verzeichnis noch nicht existiert, wird es erstellt.

js
const dirName = "directoryToGetName";

// assuming we have a directory handle: 'currentDirHandle'
const subDir = await currentDirHandle.getDirectoryHandle(dirName, {
  create: true,
});

Dateipfad zurĂĽckgeben

Die folgende asynchrone Funktion verwendet resolve(), um den Pfad zu einer ausgewählten Datei relativ zu einem angegebenen Verzeichnis-Handle zu finden.

js
async function returnPathDirectories(directoryHandle) {
  // Get a file handle by showing a file picker:
  const handle = await self.showOpenFilePicker();
  if (!handle) {
    // User canceled, or otherwise failed to open a file.
    return;
  }

  // Check if handle exists inside our directory handle
  const relativePaths = await directoryHandle.resolve(handle);

  if (relativePaths === 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);
    }
  }
}

Handles fĂĽr alle Dateien in einem Verzeichnis zurĂĽckgeben

Das folgende Beispiel durchsucht rekursiv ein Verzeichnis, um FileSystemFileHandle-Objekte fĂĽr jede Datei in diesem Verzeichnis zurĂĽckzugeben:

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

Spezifikationen

Spezifikation
File System
# api-filesystemdirectoryhandle

Browser-Kompatibilität

Siehe auch