FileSystemFileHandle:createSyncAccessHandle() 方法

安全上下文: 此项功能仅在一些支持的浏览器安全上下文(HTTPS)中可用。

FileSystemFileHandle 接口的 createSyncAccessHandle() 方法返回一个 Promise 对象,可兑现一个用于同步读写文件的 FileSystemSyncAccessHandle 对象。此方法的同步特性带来了性能优势,但是只能在专用于操作源私有文件系统上的文件的 Web Worker 中使用。

创建 FileSystemSyncAccessHandle 会对与文件句柄关联的文件进行独占锁定。这用于在文件已有的访问句柄被关闭前,阻止对文件创建更多的 FileSystemSyncAccessHandleFileSystemWritableFileStream

语法

js
createSyncAccessHandle()

参数

无。

返回值

一个 Promise 对象,可兑现一个 FileSystemSyncAccessHandle 对象。

异常

InvalidStateError DOMException

如果 FileSystemSyncAccessHandle 对象代表的不是源私有文件系统上的文件,抛出此异常。

NoModificationAllowedError DOMException

如果浏览器无法获得文件句柄所关联的文件的锁定,抛出此异常。

NotAllowedError DOMException

如果在 API 层面上没有被授予权限(也就是需要调用 FileSystemHandle.requestPermission),抛出此异常。

示例

以下异步事件处理函数处于 Web Worker 上下文。其中的代码片段创建了一个同步文件访问句柄。

js
onmessage = async (e) => {
  // 获取从主线程发往 worker 的消息
  const message = e.data;

  // 获取草稿文件的句柄
  const root = await navigator.storage.getDirectory();
  const draftHandle = await root.getFileHandle("draft.txt", { create: true });
  // 获取同步访问句柄
  const accessHandle = await draftHandle.createSyncAccessHandle();

  // ……

  // 用完 FileSystemSyncAccessHandle 记得把它关闭
  accessHandle.close();
};

规范

Specification
File System Standard
# api-filesystemfilehandle-createsyncaccesshandle

浏览器兼容性

BCD tables only load in the browser

参见