FileSystemChangeRecord
Das FileSystemChangeRecord
-Wörterbuch der File System API enthält Details zu einer einzelnen Änderung, die von einem FileSystemObserver
beobachtet wurde.
Das records
-Argument, das an die Rückruffunktion des Konstruktors von FileSystemObserver()
übergeben wird, ist ein Array von FileSystemChangeRecord
-Objekten.
Instanzeigenschaften
changedHandle
-
Eine Referenz auf das Dateisystem-Handle, bei dem die Änderung beobachtet wurde.
- Für das benutzerbeobachtbare Dateisystem kann dies ein
FileSystemFileHandle
oder einFileSystemDirectoryHandle
sein. - Für das Origin Private File System (OPFS) kann es sich um ein
FileSystemFileHandle
, einFileSystemDirectoryHandle
oder einFileSystemSyncAccessHandle
handeln.
Diese Eigenschaft wird
null
sein für Aufzeichnungen mit einem Typ"disappeared"
,"errored"
oder"unknown"
. - Für das benutzerbeobachtbare Dateisystem kann dies ein
relativePathComponents
-
Ein Array, das die Pfadkomponenten enthält, die den relativen Dateipfad vom
root
zumchangedHandle
ausmachen, einschließlich deschangedHandle
-Dateinamens. relativePathMovedFrom
-
Ein Array, das die Pfadkomponenten enthält, die den relativen Dateipfad vom
root
zum früheren Standort deschangedHandle
ausmachen, im Fall von Beobachtungen mit einem Typ"moved"
. Wenn der Typ nicht"moved"
ist, wird diese Eigenschaftnull
sein. root
-
Eine Referenz auf das Wurzel-Dateisystem-Handle, also das, welches an den
observe()
-Aufruf übergeben wurde, der die Beobachtung gestartet hat. Auch hierbei kann es sich um einFileSystemFileHandle
,FileSystemDirectoryHandle
oderFileSystemSyncAccessHandle
handeln. type
-
Ein String, der den Typ der beobachteten Änderung darstellt. Mögliche Werte sind:
appeared
-
Die Datei oder das Verzeichnis wurde erstellt oder in die
root
-Dateistruktur verschoben. disappeared
-
Die Datei oder das Verzeichnis wurde gelöscht oder aus der
root
-Dateistruktur verschoben. Um herauszufinden, welche Datei oder welches Verzeichnis verschwunden ist, können Sie die EigenschaftrelativePathComponents
abfragen. errored
-
Ein Fehlerzustand trat im beobachteten Verzeichnis auf. Dies kann passieren, wenn:
- Die Beobachtung nicht mehr gültig ist. Dies kann auftreten, wenn das beobachtete Handle (also das
root
der Beobachtung) gelöscht oder verschoben wird. In diesem Fall wird eine"disappeared"
-Beobachtung aufgezeichnet, gefolgt von einer"errored"
-Beobachtung. In solchen Fällen möchten Sie möglicherweise die Beobachtung des Dateisystems mitFileSystemObserver.disconnect()
beenden. - Das Maximum an Beobachtungen pro Origin erreicht ist. Diese Grenze hängt vom Betriebssystem ab und ist im Voraus nicht bekannt. Wenn dies passiert, kann die Website versuchen, es erneut zu versuchen, obwohl es keine Garantie gibt, dass das Betriebssystem genug Ressourcen freigegeben hat.
- Die Berechtigung zum Zugriff auf das Verzeichnis oder das Dateihandle entfernt wird.
- Die Beobachtung nicht mehr gültig ist. Dies kann auftreten, wenn das beobachtete Handle (also das
modified
-
Die Datei oder das Verzeichnis wurde geändert.
moved
-
Die Datei oder das Verzeichnis wurde innerhalb der Wurzel-Dateistruktur verschoben.
Hinweis: Unter Windows werden
"moved"
-Beobachtungen zwischen Verzeichnissen nicht unterstützt. Sie werden als"disappeared"
-Beobachtungen im Quellverzeichnis und als"appeared"
-Beobachtungen im Zielverzeichnis gemeldet. unknown
-
Gibt an, dass einige Beobachtungen verpasst wurden. Wenn Sie Informationen darüber wünschen, was sich in den verpassten Beobachtungen geändert hat, könnten Sie auf eine Abfrage des beobachteten Verzeichnisses zurückgreifen.
Je nach Betriebssystem werden nicht alle Beobachtungen mit dem gleichen Detailgrad gemeldet, zum Beispiel wenn sich der Inhalt eines Verzeichnisses rekursiv ändert. Im besten Fall erhält die Website einen detaillierten Änderungsdatensatz, der den Typ der Änderung und ein Handle zum betroffenen Pfad enthält. Im schlimmsten Fall erhält die Website einen allgemeineren Änderungsdatensatz (also einen Typ "unknown"
), der trotzdem eine Durchsuchung des Verzeichnisses erfordert, um herauszufinden, welches Handle sich geändert hat.
Dies ist dennoch eine Verbesserung gegenüber einer regelmäßigen Abfrage, da die Verzeichniserfassung bedarfsgerecht aus der Rückruffunktion gestartet werden kann, anstatt regelmäßig auf Änderungen zu prüfen.
Beispiele
Einen FileSystemObserver
initialisieren
Bevor Sie mit der Beobachtung von Datei- oder Verzeichnisänderungen beginnen können, müssen Sie einen FileSystemObserver
initialisieren, um die Beobachtungen zu verwalten. Dies wird mit dem FileSystemObserver()
-Konstruktor durchgeführt, der eine Rückruffunktion als Argument nimmt:
const observer = new FileSystemObserver(callback);
Der Körper der Rückruffunktion kann so spezifiziert werden, dass er Dateiänderungsbeobachtungen auf jede gewünschte Weise zurückgibt und verarbeitet. Jedes Objekt innerhalb des records
-Arrays ist ein FileSystemChangeRecord
-Objekt:
const callback = (records, observer) => {
for (const record of records) {
console.log("Change detected:", record);
const reportContent = `Change observed to ${record.changedHandle.kind} ${record.changedHandle.name}. Type: ${record.type}.`;
sendReport(reportContent); // Some kind of user-defined reporting function
}
observer.disconnect();
};
Spezifikationen
Derzeit nicht Teil einer Spezifikation. Siehe https://github.com/whatwg/fs/pull/165 für die relevante Spezifikations-PR.
Siehe auch
FileSystemObserver()
-Konstruktor- File System API
- Die Origin-Testphase der File System Observer API auf developer.chrome.com (2024)