FileSystemHandle: remove() 方法

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

注意:此功能在 Web Workers 中可用。

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

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

FileSystemHandle 介面的 remove() 方法請求從底層檔案系統中移除由該控制代碼表示的條目。

remove() 方法允許您直接從控制代碼中刪除檔案或目錄。如果沒有此方法,您將不得不獲取父目錄的控制代碼,然後在該控制代碼上呼叫 FileSystemDirectoryHandle.removeEntry() 來刪除它。

您還可以呼叫 Origin Private File System 的根目錄上的 remove() 來清除其內容,之後會建立一個新的空 OPFS。

語法

js
remove()
remove(options)

引數

options 可選

一個指定移除選項的物件。可能的屬性如下:

recursive 可選

一個布林值,預設為 false。當設定為 true 且條目是目錄時,其內容將被遞迴移除。

返回值

一個 Promise,成功時解析為 undefined

異常

InvalidModificationError DOMException

如果 recursive 設定為 false 且要移除的條目是帶有子項的目錄,則會丟擲此異常。

NoModificationAllowedError DOMException

如果瀏覽器未能獲取到條目的獨佔鎖,則會丟擲此異常。

NotAllowedError DOMException

如果 PermissionStatus 不是 granted,則會丟擲此異常。

NotFoundError DOMException

如果找不到條目,則會丟擲此異常。

示例

我們的 FileSystemHandle.remove() 演示(請參閱 原始碼)是一個檔案建立器應用程式。您可以在 <textarea> 中輸入文字,然後按“儲存檔案” <button>,應用程式將開啟一個檔案選擇器,允許您將該文字儲存到您選擇的文字檔案中,儲存在您的本地檔案系統中。您也可以選擇刪除您建立的檔案。

它不允許您檢視建立檔案的內容,並且在頁面重新載入/關閉時不會與底層檔案系統保持同步。這意味著如果您在重新載入或關閉選項卡之前不選擇刪除,應用程式建立的檔案仍將存在於檔案系統中。

檔案選擇器、檔案控制代碼以及要建立的新檔案本身,都是使用 window.showSaveFilePicker() 建立的。文字透過 FileSystemFileHandle.createWritable() 寫入檔案。

一旦在檔案系統中建立了一個檔案,就會在應用程式中建立一個條目(請參閱原始碼中的 processNewFile())。

  • 檔案控制代碼的引用儲存在一個名為 savedFileRefs 的陣列中,以便以後可以輕鬆引用。
  • 在 UI 中“已儲存檔案”標題下方會新增一個列表項,其中顯示檔名以及一個“刪除”按鈕。

當按下“刪除”按鈕時,將執行 deleteFile() 函式,其程式碼如下:

js
async function deleteFile(e) {
  for (const handle of savedFileRefs) {
    if (handle.name === `${e.target.id}.txt`) {
      await handle.remove();
      savedFileRefs = savedFileRefs.filter(
        (handle) => handle.name !== `${e.target.id}.txt`,
      );
      e.target.parentElement.parentElement.removeChild(e.target.parentElement);
    }
  }
}

逐步講解:

  1. 對於 savedFileRefs 陣列中儲存的每個檔案控制代碼,我們檢查其名稱是否與觸發事件的按鈕的 id 屬性匹配。
  2. 找到匹配項後,我們就對該控制代碼執行 FileSystemHandle.remove(),將檔案從底層檔案系統中刪除。
  3. 我們還將匹配的控制代碼從 savedFileRefs 陣列中刪除。
  4. 最後,我們從 UI 中刪除與該檔案相關的列表項。

規範

此功能並非任何規範的一部分,但將來可能會成為標準。有關詳細資訊,請參閱 whatwg/fs#9

瀏覽器相容性

另見