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 FileSystemObserver()
übergeben wird, ist ein Array von FileSystemChangeRecord
-Objekten.
Instanzeigenschaften
changedHandle
-
Ein Verweis auf den Dateisystem-Handle, bei dem die Änderung beobachtet wurde.
- Für das für den Benutzer sichtbare 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 Datensätze mit einem Typ"disappeared"
,"errored"
oder"unknown"
. - Für das für den Benutzer sichtbare Dateisystem kann dies ein
relativePathComponents
-
Ein Array, das die Pfadkomponenten enthält, die den relativen Dateipfad vom
root
zumchangedHandle
bilden, einschließlich deschangedHandle
-Dateinamens. relativePathMovedFrom
-
Ein Array, das die Pfadkomponenten enthält, die den relativen Dateipfad vom
root
zur vorherigen Position deschangedHandle
bilden, im Falle von Beobachtungen mit einem Typ"moved"
. Wenn der Typ nicht"moved"
ist, wird diese Eigenschaftnull
sein. root
-
Ein Verweis auf den Root-Dateisystem-Handle, das heißt, auf den, der zur Methode
observe()
übergeben wurde, die die Beobachtung gestartet hat. Auch hier kann es sich um einFileSystemFileHandle
, einFileSystemDirectoryHandle
oder einFileSystemSyncAccessHandle
handeln. type
-
Ein String, der den beobachteten Änderungstyp 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 ist im beobachteten Verzeichnis aufgetreten. Dies kann passieren, wenn:
- Die Beobachtung nicht mehr gültig ist. Das kann passieren, wenn der beobachtete Handle (das heißt, 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 könnten Sie in Erwägung ziehen, die Beobachtung des Dateisystems mitFileSystemObserver.disconnect()
zu stoppen. - Das Maximum an Beobachtungen pro Ursprung erreicht ist. Dieses Limit ist abhängig vom Betriebssystem und vorher nicht bekannt. Wenn dies geschieht, könnte die Website entscheiden, es erneut zu versuchen, obwohl nicht garantiert ist, dass das Betriebssystem genügend Ressourcen freigegeben hat.
- Die Berechtigung, auf das Verzeichnis- oder Datei-Handle zuzugreifen, entfernt wurde.
- Die Beobachtung nicht mehr gültig ist. Das kann passieren, wenn der beobachtete Handle (das heißt, das
modified
-
Die Datei oder das Verzeichnis wurde modifiziert.
moved
-
Die Datei oder das Verzeichnis wurde innerhalb der
root
-Dateistruktur verschoben.Hinweis: Unter Windows werden
"moved"
-Beobachtungen zwischen Verzeichnissen nicht unterstützt. Sie werden als"disappeared"
-Beobachtung im Quellverzeichnis und als"appeared"
-Beobachtung im Zielverzeichnis gemeldet. unknown
-
Zeigt an, dass einige Beobachtungen verpasst wurden. Wenn Sie Informationen über die verpassten Beobachtungsänderungen herausfinden möchten, könnten Sie auf das Abfragen des beobachteten Verzeichnisses zurückgreifen.
Abhängig vom Betriebssystem werden nicht alle Beobachtungen mit dem gleichen Detaillierungsgrad gemeldet, beispielsweise wenn der Inhalt eines Verzeichnisses rekursiv verändert wird. Im besten Fall erhält die Website einen detaillierten Änderungsdatensatz, der den Typ der Änderung und einen Handle zum betroffenen Pfad enthält. Im schlimmsten Fall erhält die Website einen allgemeineren Änderungsdatensatz (das heißt, einen "unknown"
-Typ), der dennoch erfordert, dass das Verzeichnis enumeriert wird, um herauszufinden, welcher Handle geändert wurde.
Dies ist immer noch eine Verbesserung gegenüber dem Abfragen, da die Verzeichniseinrichtung nach Bedarf aus der Rückruffunktion heraus gestartet werden kann, anstatt regelmäßig auf Änderungen abfragen zu müssen.
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 behandeln. Dies geschieht mit dem Konstruktor FileSystemObserver()
, der eine Rückruffunktion als Argument annimmt:
const observer = new FileSystemObserver(callback);
Der Rückruffunktionskörper kann so spezifiziert werden, dass er Dateisänderungsbeobachtungen auf beliebige Weise zurückgibt und verarbeitet. Jedes Objekt im records
-Array 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 den relevanten Spezifikations-PR.
Siehe auch
FileSystemObserver()
Konstruktor- File System API
- Der File System Observer API Origin Trial auf developer.chrome.com (2024)