FileSystemHandle: remove() 方法
注意:此功能在 Web Workers 中可用。
非標準:此特性未標準化。我們不建議在生產環境中使用非標準特性,因為它們瀏覽器支援有限,並且可能會更改或被移除。但是,在沒有標準選項的特定情況下,它們可以是合適的替代方案。
FileSystemHandle 介面的 remove() 方法請求從底層檔案系統中移除由該控制代碼表示的條目。
remove() 方法允許您直接從控制代碼中刪除檔案或目錄。如果沒有此方法,您將不得不獲取父目錄的控制代碼,然後在該控制代碼上呼叫 FileSystemDirectoryHandle.removeEntry() 來刪除它。
您還可以呼叫 Origin Private File System 的根目錄上的 remove() 來清除其內容,之後會建立一個新的空 OPFS。
語法
remove()
remove(options)
引數
options可選-
一個指定移除選項的物件。可能的屬性如下:
recursive可選-
一個布林值,預設為
false。當設定為true且條目是目錄時,其內容將被遞迴移除。
返回值
一個 Promise,成功時解析為 undefined。
異常
InvalidModificationErrorDOMException-
如果
recursive設定為false且要移除的條目是帶有子項的目錄,則會丟擲此異常。 NoModificationAllowedErrorDOMException-
如果瀏覽器未能獲取到條目的獨佔鎖,則會丟擲此異常。
NotAllowedErrorDOMException-
如果
PermissionStatus不是granted,則會丟擲此異常。 NotFoundErrorDOMException-
如果找不到條目,則會丟擲此異常。
示例
我們的 FileSystemHandle.remove() 演示(請參閱 原始碼)是一個檔案建立器應用程式。您可以在 <textarea> 中輸入文字,然後按“儲存檔案” <button>,應用程式將開啟一個檔案選擇器,允許您將該文字儲存到您選擇的文字檔案中,儲存在您的本地檔案系統中。您也可以選擇刪除您建立的檔案。
它不允許您檢視建立檔案的內容,並且在頁面重新載入/關閉時不會與底層檔案系統保持同步。這意味著如果您在重新載入或關閉選項卡之前不選擇刪除,應用程式建立的檔案仍將存在於檔案系統中。
檔案選擇器、檔案控制代碼以及要建立的新檔案本身,都是使用 window.showSaveFilePicker() 建立的。文字透過 FileSystemFileHandle.createWritable() 寫入檔案。
一旦在檔案系統中建立了一個檔案,就會在應用程式中建立一個條目(請參閱原始碼中的 processNewFile())。
- 檔案控制代碼的引用儲存在一個名為
savedFileRefs的陣列中,以便以後可以輕鬆引用。 - 在 UI 中“已儲存檔案”標題下方會新增一個列表項,其中顯示檔名以及一個“刪除”按鈕。
當按下“刪除”按鈕時,將執行 deleteFile() 函式,其程式碼如下:
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);
}
}
}
逐步講解:
- 對於
savedFileRefs陣列中儲存的每個檔案控制代碼,我們檢查其名稱是否與觸發事件的按鈕的id屬性匹配。 - 找到匹配項後,我們就對該控制代碼執行
FileSystemHandle.remove(),將檔案從底層檔案系統中刪除。 - 我們還將匹配的控制代碼從
savedFileRefs陣列中刪除。 - 最後,我們從 UI 中刪除與該檔案相關的列表項。
規範
此功能並非任何規範的一部分,但將來可能會成為標準。有關詳細資訊,請參閱 whatwg/fs#9。
瀏覽器相容性
載入中…