FileSystemObserver: observe() 方法
非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。
FileSystemObserver 接口的 observe() 方法要求观察器开始观察给定文件或目录的更改。
语法
observe(handle)
observe(handle, options)
参数
handle-
表示要观察的文件或目录的文件系统条目的句柄。
- 对于用户可观察的文件系统,这可以是一个
FileSystemFileHandle或一个FileSystemDirectoryHandle。 - 对于 源私有文件系统 (OPFS),它可以是
FileSystemFileHandle、FileSystemDirectoryHandle或FileSystemSyncAccessHandle。
- 对于用户可观察的文件系统,这可以是一个
options可选-
一个指定
observe()调用选项的对象。它可以包含以下属性:recursive-
一个布尔值,指定是否要递归观察目录的更改。如果设置为
true,则会观察目录本身以及所有包含的子目录和文件的更改。如果设置为false,则只观察目录本身和直接包含的文件的更改(即,子目录中的文件将被排除)。默认为false。如果
handle表示一个文件,则此属性无效。
返回值
异常
NotFoundErrorDOMException-
如果找不到
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。
浏览器兼容性
加载中…