Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
FileSystemChangeRecord
DasFileSystemChangeRecord-Wörterbuch derFile System API enthält Details zu einer einzelnen Änderung, die von einemFileSystemObserver beobachtet wurde.
Dasrecords-Argument, das an die Rückruffunktion des KonstruktorsFileSystemObserver() übergeben wird, ist ein Array vonFileSystemChangeRecord-Objekten.
In diesem Artikel
Instanz-Eigenschaften
changedHandleEine Referenz auf den Dateisystem-Handle, bei dem die Änderung beobachtet wurde.
- Für das für Benutzer sichtbare Dateisystem kann dies ein
FileSystemFileHandleoder einFileSystemDirectoryHandlesein. - Für dasOrigin Private File System (OPFS) kann es ein
FileSystemFileHandle, einFileSystemDirectoryHandleoder einFileSystemSyncAccessHandlesein.
Diese Eigenschaft wird
nullsein für Aufzeichnungen mit einem Typ"disappeared","errored"oder"unknown".- Für das für Benutzer sichtbare Dateisystem kann dies ein
relativePathComponentsEin Array, das die Pfadkomponenten enthält, die den relativen Dateipfad vom
rootzumchangedHandlebilden, einschließlich deschangedHandle-Dateinamens.relativePathMovedFromEin Array, das die Pfadkomponenten enthält, die den relativen Dateipfad vom
rootzum früheren Speicherort deschangedHandlebilden, im Fall von Beobachtungen mit einem Typ"moved". Wenn der Typ nicht"moved"ist, wird diese Eigenschaftnullsein.rootEine Referenz auf den root-Dateisystem-Handle, also den, der an den
observe()-Aufruf übergeben wurde, der die Beobachtung gestartet hat. Auch hier kann es sich um einFileSystemFileHandle,FileSystemDirectoryHandleoderFileSystemSyncAccessHandlehandeln.typeEin String, der den Typ der beobachteten Änderung darstellt. Mögliche Werte sind:
appearedDie Datei oder das Verzeichnis wurde erstellt oder in die
root-Dateistruktur verschoben.disappearedDie 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 EigenschaftrelativePathComponentsabfragen.erroredEin Fehlerzustand ist im beobachteten Verzeichnis aufgetreten. Dies kann eintreten, wenn:
- Die Beobachtung nicht mehr gültig ist. Dies kann geschehen, wenn der beobachtete Handle (also der
rootder Beobachtung) gelöscht oder verschoben wird. In diesem Fall wird eine"disappeared"-Beobachtung aufgezeichnet, gefolgt von einer"errored"-Beobachtung. In solchen Fällen können Sie die Beobachtung des Dateisystems möglicherweise 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 Seite entscheiden, erneut zu versuchen, obwohl es keine Garantie gibt, dass das Betriebssystem genügend Ressourcen freigeben wird.
- Die Berechtigung zum Zugriff auf das Verzeichnishandle oder Dateihandle entfernt wird.
- Die Beobachtung nicht mehr gültig ist. Dies kann geschehen, wenn der beobachtete Handle (also der
modifiedDie Datei oder das Verzeichnis wurde geändert.
movedDie Datei oder das Verzeichnis wurde innerhalb der root-Dateistruktur verschoben.
Hinweis:Unter Windows werden
"moved"-Beobachtungen nicht zwischen Verzeichnissen unterstützt. Sie werden als"disappeared"-Beobachtung im Quellverzeichnis und als"appeared"-Beobachtung im Zielverzeichnis gemeldet.unknownGibt an, dass einige Beobachtungen verpasst wurden. Wenn Sie Informationen darüber erhalten möchten, was sich in den verpassten Beobachtungen geändert hat, können Sie möglicherweise auf das Abfragen des beobachteten Verzeichnisses zurückgreifen.
Abhängig vom Betriebssystem werden nicht alle Beobachtungen mit dem gleichen Detailgrad gemeldet, zum Beispiel wenn sich die Inhalte eines Verzeichnisses rekursiv ändern. Im besten Fall erhält die Website einen detaillierten Änderungsbericht, der den Typ der Änderung und einen Handle zum betroffenen Pfad enthält. Im schlimmsten Fall erhält die Website einen eher generischen Änderungsbericht (d.h. einen"unknown" Typ), der dennoch eine Aufzählung des Verzeichnisses erfordert, um herauszufinden, welcher Handle sich geändert hat.
Dies ist dennoch eine Verbesserung gegenüber dem Abfragen, da die Verzeichnisauflistung bedarfsgerecht aus der Rückruffunktion heraus gestartet werden kann, anstatt die Änderungen periodisch abzufragen.
Beispiele
>Initialisieren einesFileSystemObserver
Bevor Sie beginnen können, Änderungen an Dateien oder Verzeichnissen zu beobachten, müssen Sie einenFileSystemObserver initialisieren, um die Beobachtungen zu handhaben. Dies erfolgt mit demFileSystemObserver()-Konstruktor, der eine Rückruffunktion als Argument nimmt:
const observer = new FileSystemObserver(callback);DerRückruffunktion-Körper kann spezifiziert werden, um Dateisystemänderungen auf beliebige Weise zurückzugeben und zu verarbeiten. Jedes Objekt imrecords-Array ist einFileSystemChangeRecord-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
Ist derzeit nicht Teil einer Spezifikation. Siehehttps://github.com/whatwg/fs/pull/165 für den relevanten Spezifikations-PR.
Siehe auch
FileSystemObserver()-Konstruktor- File System API
- Der File System Observer API Origin Trial auf developer.chrome.com (2024)