FileSystemSyncAccessHandle: getSize() 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 getSize()
-Methode der FileSystemSyncAccessHandle
-Schnittstelle gibt die Größe der mit dem Handle verbundenen Datei in Bytes zurück.
Hinweis: In früheren Versionen der Spezifikation wurden close()
, flush()
, getSize()
und truncate()
fälschlicherweise als asynchrone Methoden angegeben, und ältere Versionen einiger Browser implementieren sie auf diese Weise. Aktuelle Browser, die diese Methoden unterstützen, implementieren sie jedoch als synchrone Methoden.
Syntax
getSize()
Parameter
Keine.
Rückgabewert
Eine Zahl, die die Größe der Datei in Bytes darstellt.
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn das zugehörige Zugriffshandle bereits geschlossen ist.
Beispiele
Die folgende asynchrone Ereignis-Handler-Funktion ist in einem Web Worker enthalten. Bei Empfang einer Nachricht vom Hauptthread wird:
- Ein synchrones Datei-Zugriffshandle erstellt.
- Die Größe der Datei ermittelt und ein
ArrayBuffer
erstellt, der sie enthält. - Der Dateiinhalte in den Puffer gelesen.
- Die Nachricht codiert und ans Ende der Datei geschrieben.
- Die Änderungen auf die Festplatte übermittelt und das Zugriffshandle 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-getsize |
Browser-Kompatibilität
BCD tables only load in the browser