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。
瀏覽器相容性
載入中…