FileSystemHandle: remove() 方法

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,在支持的浏览器中部分或全部可用。

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

实验性: 这是一项实验性技术
在生产环境中使用之前,请仔细查看浏览器兼容性表

非标准: 此功能是非标准的,不在标准轨道上。不要在面向网络的生产站点上使用它:它不会适用于每个用户。实现之间也可能存在较大的不兼容性,并且行为将来可能会改变。

remove() 方法是FileSystemHandle 接口的方法,用于请求从底层文件系统中删除该句柄所表示的条目。

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

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅