FileSystemObserver: observe() 方法
非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。
FileSystemObserver
接口的 observe()
方法要求观察器开始观察给定文件或目录的更改。
语法
observe(handle)
observe(handle, options)
参数
handle
-
表示要观察的文件或目录的文件系统条目的句柄。
- 对于用户可观察的文件系统,这可以是一个
FileSystemFileHandle
或一个FileSystemDirectoryHandle
。 - 对于 源私有文件系统 (OPFS),它可以是
FileSystemFileHandle
、FileSystemDirectoryHandle
或FileSystemSyncAccessHandle
。
- 对于用户可观察的文件系统,这可以是一个
options
可选-
一个指定
observe()
调用选项的对象。它可以包含以下属性:recursive
-
一个布尔值,指定是否要递归观察目录的更改。如果设置为
true
,则会观察目录本身以及所有包含的子目录和文件的更改。如果设置为false
,则只观察目录本身和直接包含的文件的更改(即,子目录中的文件将被排除)。默认为false
。如果
handle
表示一个文件,则此属性无效。
返回值
异常
NotFoundError
DOMException
-
如果找不到
handle
所表示的文件或目录,则会抛出此错误。
示例
观察文件或目录
假设 FileSystemObserver
实例可用,您可以通过调用 observe()
开始观察文件系统条目的更改。
您可以观察用户可观察文件系统或 源私有文件系统 (OPFS) 中的文件或目录,方法是将 FileSystemFileHandle
或 FileSystemDirectoryHandle
传递给 observe()
。这些对象的实例可以通过例如使用 Window.showSaveFilePicker()
或 Window.showDirectoryPicker()
请求用户选择文件或目录来获得。
// Observe a file
async function observeFile() {
const fileHandle = await window.showSaveFilePicker();
await observer.observe(fileHandle);
}
// Observe a directory
async function observeDirectory() {
const directoryHandle = await window.showDirectoryPicker();
await observer.observe(directoryHandle);
}
您还可以通过将 FileSystemSyncAccessHandle
传递给 observe()
来观察 OPFS 的更改。
// Observe an OPFS file system entry
async 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()
并将 recursive
选项设置为 true
。
// Observe a directory recursively
async function observeDirectory() {
const directoryHandle = await window.showDirectoryPicker();
await observer.observe(directoryHandle, { recursive: true });
}
规范
目前不是规范的一部分。请参阅 https://github.com/whatwg/fs/pull/165 以获取相关的规范 PR。
浏览器兼容性
加载中…