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.

* Some parts of this feature may have varying levels of support.

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
# api-filesystemhandle

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
FileSystemHandle
isSameEntry
kind
move
Non-standard
name
queryPermission
Experimental
remove
ExperimentalNon-standard
requestPermission
Experimental

Legend

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

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Non-standard. Check cross-browser support before using.

Siehe auch