FileSystemSyncAccessHandle: flush()-Methode

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 nur in Dedicated Web Workers verfügbar.

Die flush()-Methode der FileSystemSyncAccessHandle-Schnittstelle speichert alle Änderungen, die über die write()-Methode an der mit dem Handle verknüpften Datei vorgenommen wurden, auf der Festplatte.

Bitte beachten Sie, dass Sie diese Methode nur aufrufen müssen, wenn Sie die Änderungen zu einem bestimmten Zeitpunkt auf der Festplatte speichern müssen. Andernfalls können Sie das zugrundeliegende Betriebssystem dies automatisch erledigen lassen, was in den meisten Fällen ausreichend sein sollte.

Hinweis: In früheren Versionen der Spezifikation wurden close(), flush(), getSize() und truncate() fälschlicherweise als asynchrone Methoden spezifiziert, und ältere Versionen einiger Browser implementierten sie auf diese Weise. In allen aktuellen Browsern, die diese Methoden unterstützen, werden sie jedoch als synchrone Methoden implementiert.

Syntax

js
flush()

Parameter

Keine.

Rückgabewert

Keine (undefined).

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn das zugehörige Zugriffs-Handle bereits geschlossen ist.

Beispiele

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

  • Ein synchroner Datei-Zugriffs-Handle erstellt.
  • Die Größe der Datei ermittelt und ein ArrayBuffer erstellt, um sie aufzunehmen.
  • Der Dateiinhalt in den Puffer gelesen.
  • Die Nachricht kodiert und am Ende der Datei geschrieben.
  • Die Änderungen auf der Festplatte gespeichert und das Zugriffs-Handle geschlossen.
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();
};

Spezifikationen

Specification
File System
# api-filesystemsyncaccesshandle-flush

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
flush
Synchronous implementation of the flush() method

Legend

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

Full support
Full support
No support
No support

Siehe auch