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: Dieses Feature ist nur verfügbar in Dedicated Web Workers.
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
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.
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 Standard # api-filesystemsyncaccesshandle-flush |
Browser-Kompatibilität
BCD tables only load in the browser