API-Verbesserungen für die Arbeit mit Dateien im Browser

Unterstützung mehrerer Reader und Autoren für FileSystemSyncAccessHandle und exklusiver Writer für FileSystemWritableFileStream.

Mehrere Leser und Autoren für FileSystemSyncAccessHandle

Mit dem privaten Ursprungsdateisystem (manchmal auch als Bucket-Dateisystem bezeichnet) können Entwickler auf Dateien zugreifen, die für maximale Lese- und Schreibleistung optimiert sind. Dies geschieht über FileSystemSyncAccessHandle-Objekte. Derzeit schlägt der Versuch, mehrere FileSystemSyncAccessHandle-Objekte für denselben Dateieintrag zu öffnen, mit der Fehlermeldung NoModificationAllowedError fehl. Da diese Einschränkung in bestimmten Anwendungsfällen begrenzt ist, wird in Chrome 121 ein neuer mode-Parameter für die Methode FileSystemFileHandle.createSyncAccessHandle() mit den folgenden zulässigen Stringwerten eingeführt:

  • "readwrite": Das ist die aktuelle Standardeinstellung. Nach dem Öffnen sind alle Methoden für FileSystemSyncAccessHandle zulässig. Es ist nur eine Instanz von FileSystemSyncAccessHandle zulässig.
  • "read-only" : Ermöglicht mehrere Lesegeräte. Nach dem Öffnen sind nur noch schreibgeschützte Methoden für FileSystemSyncAccessHandle zulässig: read(), getSize() und close(). Es können mehrere Instanzen von FileSystemSyncAccessHandle erstellt werden, sofern sie sich alle im Lesemodus befinden.
  • "readwrite-unsafe": Mehrere Autoren sind zulässig. Nach dem Öffnen sind alle Methoden für FileSystemSyncAccessHandle zulässig. Es können mehrere Instanzen von FileSystemSyncAccessHandle erstellt werden, solange sie sich alle im nicht schreibgeschützten Modus befinden.

Das aktuelle Verhalten wird beibehalten, da die Option "readwrite" als Standardeinstellung beibehalten wird, die jeweils nur eine Instanz zulässt. Wenn eine Website mehrere FileSystemSyncAccessHandle-Objekte öffnen, aber keine Schreibvorgänge ausführen muss, sollte die Option "read-only" verwendet werden. Schließlich ermöglicht die letzte Option "readwrite-unsafe" mehrere Instanzen sowie Lese- und Schreibvorgänge. In diesem Fall können Schreibvorgänge nicht jugendfrei sein, wenn sie von mehreren Tabs aus durchgeführt werden, und Websites müssten ihr eigenes Sperrschema zur Verfügung stellen.

const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});

Exklusiver Writer für FileSystemWritableFileStream

Anders als bei FileSystemSyncAccessHandle können derzeit mehrere Instanzen von FileSystemWritableFileStream pro Dateieintrag erstellt werden. Was fehlt, ist eine Möglichkeit, eine Option für einen exklusiven Autor anzubieten. Chrome 121 fügt der Methode FileSystemAccessFileHandle.createWritable() einen optionalen mode-Parameter mit den folgenden Werten hinzu:

  • "exclusive"-Modus: Es kann immer nur ein Autor vorhanden sein.
  • "siloed"-Modus: Das ist die aktuelle Standardeinstellung. Jeder erstellte Writer hat eine eigene Auslagerungsdatei.
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();

Unterstützte Browser

Seit Chrome 121 werden beide Funktionen unterstützt, also mehrere Leser und Autoren für FileSystemSyncAccessHandle sowie exklusive Autoren für FileSystemWritableFileStream.

Entwicklertest starten

Wenn du den Entwicklertest starten möchtest, um die Funktion vor der Einführung von Chrome 121 zu testen, setze das Flag #file-system-access-locking-scheme in chrome://flags auf Aktiviert. So können Sie die Funktion lokal auf Ihrem Computer testen.

Danksagungen

Dieser Artikel wurde von Daseul Lee, Nathan Memmott und Rachel Andrew geprüft.