FileSystemHandle

Baseline 2023

Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

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.

Das FileSystemHandle-Interface der File System API ist ein Objekt, das einen Datei- oder Verzeichniseintrag darstellt. Mehrere Handles können denselben Eintrag repräsentieren. In den meisten Fällen arbeiten Sie nicht direkt mit dem FileSystemHandle, sondern mit seinen Kind-Interfaces FileSystemFileHandle und FileSystemDirectoryHandle.

Schnittstellen basierend auf FileSystemHandle

Nachfolgend finden Sie eine Liste von Schnittstellen, die auf dem FileSystemHandle-Interface basieren.

FileSystemFileHandle

Repräsentiert ein Handle zu einem Datei-Eintrag.

FileSystemDirectoryHandle

Bietet ein Handle zu einem Verzeichniseintrag.

Instanz-Eigenschaften

kind Schreibgeschützt

Gibt den Typ des Eintrags zurück. Dies ist 'file', wenn der zugehörige Eintrag eine Datei ist, oder 'directory'.

name Schreibgeschützt

Gibt den Namen des zugehörigen Eintrags zurück.

Instanz-Methoden

isSameEntry()

Vergleicht zwei Handles, um festzustellen, ob die zugehörigen Einträge (entweder eine Datei oder ein Verzeichnis) übereinstimmen.

queryPermission() Experimentell

Fragt den aktuellen Berechtigungsstatus des aktuellen Handles ab.

remove() Experimentell Nicht standardisiert

Fordert die Entfernung des durch das Handle dargestellten Eintrags aus dem zugrunde liegenden Dateisystem an.

requestPermission() Experimentell

Fordert Lese- oder Lese-/Schreibrechte für das Datei-Handle an.

Beispiele

Typüberprüfung

Der untenstehende Code ermöglicht dem Nutzer die Auswahl einer Datei über den Dateiauswahldialog und prüft dann, ob das zurückgegebene Handle eine Datei oder ein Verzeichnis ist.

js
// store a reference to our file handle
let fileHandle;

async function getFile() {
  // open file picker
  [fileHandle] = await window.showOpenFilePicker();

  if (fileHandle.kind === "file") {
    // run file code
  } else if (fileHandle.kind === "directory") {
    // run directory code
  }
}

Abfrage/Anforderung von Berechtigungen

Die folgende asynchrone Funktion gibt true zurück, wenn der Benutzer Lese- oder Lese-/Schreibrechte für das Datei-Handle gewährt hat. Wenn nicht, wird die Berechtigung angefordert.

js
// fileHandle is a FileSystemFileHandle
// withWrite is a boolean set to true if write

async function verifyPermission(fileHandle, withWrite) {
  const opts = {};
  if (withWrite) {
    opts.mode = "readwrite";
  }

  // Check if we already have permission, if so, return true.
  if ((await fileHandle.queryPermission(opts)) === "granted") {
    return true;
  }

  // Request permission to the file, if the user grants permission, return true.
  if ((await fileHandle.requestPermission(opts)) === "granted") {
    return true;
  }

  // The user did not grant permission, return false.
  return false;
}

Einträge vergleichen

Die folgende Funktion vergleicht einen einzelnen Eintrag mit einem Array von Einträgen und gibt ein neues Array mit allen übereinstimmenden Einträgen zurück.

js
function removeMatches(fileEntry, entriesArr) {
  const newArr = entriesArr.filter((entry) => !fileEntry.isSameEntry(entry));

  return newArr;
}

Spezifikationen

Specification
File System Standard
# api-filesystemhandle

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch