FileSystemObserver: observe() 方法

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

非標準:此特性未標準化。我們不建議在生產環境中使用非標準特性,因為它們瀏覽器支援有限,並且可能會更改或被移除。但是,在沒有標準選項的特定情況下,它們可以是合適的替代方案。

FileSystemObserver 介面的 observe() 方法要求觀察器開始觀察給定檔案或目錄的更改。

語法

js
observe(handle)
observe(handle, options)

引數

handle

表示要觀察的檔案或目錄的檔案系統條目的控制代碼。

options 可選

一個指定 observe() 呼叫選項的物件。它可以包含以下屬性:

recursive

一個布林值,指定是否要遞迴觀察目錄的更改。如果設定為 true,則會觀察目錄本身以及所有包含的子目錄和檔案的更改。如果設定為 false,則只觀察目錄本身和直接包含的檔案的更改(即,子目錄中的檔案將被排除)。預設為 false

如果 handle 表示一個檔案,則此屬性無效。

返回值

一個 Promise,解析為 undefined

異常

NotFoundError DOMException

如果找不到 handle 所表示的檔案或目錄,則會丟擲此錯誤。

示例

觀察檔案或目錄

假設 FileSystemObserver 例項可用,您可以透過呼叫 observe() 開始觀察檔案系統條目的更改。

您可以觀察使用者可觀察檔案系統或 源私有檔案系統 (OPFS) 中的檔案或目錄,方法是將 FileSystemFileHandleFileSystemDirectoryHandle 傳遞給 observe()。這些物件的例項可以透過例如使用 Window.showSaveFilePicker()Window.showDirectoryPicker() 請求使用者選擇檔案或目錄來獲得。

js
// 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 的更改。

js
// 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

js
// 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。

瀏覽器相容性

另見