FileSystemObserver: observe() method
Secure context: This feature is available only insecure contexts (HTTPS), in some or allsupporting browsers.
Experimental:This is anexperimental technology
Check theBrowser compatibility table carefully before using this in production.
Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists.
Theobserve() method of theFileSystemObserver interface asks the observer to start observing changes to a given file or directory.
In this article
Syntax
observe(handle)observe(handle, options)Parameters
handleThe handle of the file system entry representing the file or directory to observe.
- For the user-observable file system, this can be a
FileSystemFileHandleor aFileSystemDirectoryHandle. - For theOrigin Private File System (OPFS), it can be a
FileSystemFileHandle, aFileSystemDirectoryHandle, or aFileSystemSyncAccessHandle.
- For the user-observable file system, this can be a
optionsOptionalAn object specifying options for the
observe()call. This can contain the following properties:recursiveA boolean specifying whether you want to observe changes to a directory recursively. If set to
true, changes are observed in the directory itself and all contained subdirectories and files. If set tofalse, changes are only observed in the directory itself and directly contained files (that is, files in subdirectories are excluded). Defaults tofalse.This property has no effect if
handlerepresents a file.
Return value
Exceptions
NotFoundErrorDOMExceptionThrown if the file or directory represented by
handlecould not be found.
Examples
>Observe a file or directory
Assuming aFileSystemObserver instance is available, you can start observing changes to a file system entry by callingobserve().
You can observe a file or directory in the user-observable file system or theOrigin Private File System (OPFS) by passing aFileSystemFileHandle orFileSystemDirectoryHandle toobserve(). Instances of these objects can be returned, for example, when asking the user to select a file or directory usingWindow.showSaveFilePicker() orWindow.showDirectoryPicker():
// Observe a fileasync function observeFile() { const fileHandle = await window.showSaveFilePicker(); await observer.observe(fileHandle);}// Observe a directoryasync function observeDirectory() { const directoryHandle = await window.showDirectoryPicker(); await observer.observe(directoryHandle);}You can also observe changes to the OPFS by passing aFileSystemSyncAccessHandle toobserve():
// Observe an OPFS file system entryasync function observeOPFSFile() { const root = await navigator.storage.getDirectory(); const draftHandle = await root.getFileHandle("draft.txt", { create: true }); const syncHandle = await draftHandle.createSyncAccessHandle(); await observer.observe(syncHandle);}Observe a directory recursively
To observe a directory recursively, callobserve() with therecursive option set totrue:
// Observe a directory recursivelyasync function observeDirectory() { const directoryHandle = await window.showDirectoryPicker(); await observer.observe(directoryHandle, { recursive: true });}Specifications
Not currently part of a specification. Seehttps://github.com/whatwg/fs/pull/165 for the relevant specification PR.
Browser compatibility
See also
- File System API
- The File System Observer API origin trial on developer.chrome.com (2024)