[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/API/FileSystemFileHandle [Back]  [Original]

FileSystemFileHandle - Web-APIs | MDN

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

View in English Always switch to English

FileSystemFileHandle

Baseline Weitgehend verfgbar *

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Mrz 2023 browserbergreifend verfgbar.

* Einige Teile dieser Funktion werden mglicherweise unterschiedlich gut untersttzt.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen untersttzenden Browsern verfgbar.

Hinweis: Diese Funktion ist in Web Workers verfgbar.

Die FileSystemFileHandle-Schnittstelle der File System API reprsentiert einen Verweis auf einen Dateisystemeintrag. Auf die Schnittstelle wird ber die Methode window.showOpenFilePicker() zugegriffen.

Beachten Sie, dass Lese- und Schreiboperationen von Dateizugriffsberechtigungen abhngen, die nach einem Neuladen der Seite nicht mehr bestehen, wenn keine anderen Tabs fr diesen Ursprung geffnet bleiben. Die queryPermission-Methode der FileSystemHandle-Schnittstelle kann verwendet werden, um den Berechtigungsstatus zu berprfen, bevor auf eine Datei zugegriffen wird.

FileSystemHandle FileSystemFileHandle

In diesem Artikel

Instanz-Eigenschaften

Erbt Eigenschaften von ihrem Elternteil, FileSystemHandle.

Instanz-Methoden

Erbt Methoden von ihrem Elternteil, FileSystemHandle.

getFile()

Gibt ein Promise zurck, das sich zu einem File Objekt auflst, welches den Zustand auf der Festplatte des durch den Handle dargestellten Eintrags darstellt.

createSyncAccessHandle()

Gibt ein Promise zurck, das sich zu einem FileSystemSyncAccessHandle Objekt auflst, welches verwendet werden kann, um synchron von einer Datei zu lesen und in eine Datei zu schreiben. Die synchrone Natur dieser Methode bietet Leistungsvorteile, ist jedoch nur innerhalb dedizierter Web Workers nutzbar.

createWritable()

Gibt ein Promise zurck, das sich zu einem neu erstellten FileSystemWritableFileStream Objekt auflst, welches verwendet werden kann, um in eine Datei zu schreiben.

Beispiele

Eine Datei lesen

Die folgende asynchrone Funktion prsentiert einen Dateiauswhler und sobald eine Datei ausgewhlt wurde, wird die getFile() Methode verwendet, um den Inhalt abzurufen.

js
async function getTheFile() {
  const pickerOpts = {
    types: [
      {
        description: "Images",
        accept: {
          "image/*": [".png", ".gif", ".jpeg", ".jpg"],
        },
      },
    ],
    excludeAcceptAllOption: true,
    multiple: false,
  };

  // open file picker
  const [fileHandle] = await window.showOpenFilePicker(pickerOpts);
  // get file contents
  const fileData = await fileHandle.getFile();
  return fileData;
}

Eine Datei schreiben

Die folgende asynchrone Funktion schreibt die gegebenen Inhalte auf den Datei-Handle und damit auf die Festplatte.

js
async function writeFile(fileHandle, contents) {
  // Create a FileSystemWritableFileStream to write to.
  const writable = await fileHandle.createWritable();

  // Write the contents of the file to the stream.
  await writable.write(contents);

  // Close the file and write the contents to disk.
  await writable.close();
}

Synchrones Lesen und Schreiben einer Datei

Die folgende asynchrone Ereignis-Handler-Funktion ist in einem Web Worker enthalten. Beim Empfang einer Nachricht vom Hauptthread:

  • Erstellt einen synchronen Datei-Zugriffs-Handle.
  • Ermittelt die Gre der Datei und erstellt ein ArrayBuffer, um diese zu enthalten.
  • Liest den Dateiinhalte in den Puffer.
  • Kodiert die Nachricht und schreibt sie ans Ende der Datei.
  • Speichert die nderungen auf der Festplatte und schliet den Zugriffs-Handle.
js
onmessage = async (e) => {
  // Retrieve message sent to work from main script
  const message = e.data;

  // Get handle to draft file
  const root = await navigator.storage.getDirectory();
  const draftHandle = await root.getFileHandle("draft.txt", { create: true });
  // Get sync access handle
  const accessHandle = await draftHandle.createSyncAccessHandle();

  // Get size of the file.
  const fileSize = accessHandle.getSize();
  // Read file content to a buffer.
  const buffer = new DataView(new ArrayBuffer(fileSize));
  const readBuffer = accessHandle.read(buffer, { at: 0 });

  // Write the message to the end of the file.
  const encoder = new TextEncoder();
  const encodedMessage = encoder.encode(message);
  const writeBuffer = accessHandle.write(encodedMessage, { at: readBuffer });

  // Persist changes to disk.
  accessHandle.flush();

  // Always close FileSystemSyncAccessHandle if done.
  accessHandle.close();
};

Hinweis: In frheren Versionen der Spezifikation wurden close(), flush(), getSize() und truncate() flschlicherweise als asynchrone Methoden spezifiziert, und ltere Versionen einiger Browser implementieren sie auf diese Weise. Allerdings implementieren alle aktuellen Browser, die diese Methoden untersttzen, sie als synchrone Methoden.

Spezifikationen

Spezifikation
File System
# api-filesystemfilehandle

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page