このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

FileSystemFileHandle.createSyncAccessHandle()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2023年3月⁩.

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

FileSystemFileHandle インターフェイスの createSyncAccessHandle() メソッドは、同期式でファイルを読み書きできる FileSystemSyncAccessHandle オブジェクトで解決する Promise を返します。 このメソッドは同期式であることによりパフォーマンス上有利ですが、それ用の Web Workers によるオリジンプライベートファイルシステム内のファイルの操作にのみ用いることができます。

FileSystemSyncAccessHandle を作成すると、ファイルハンドルに対応するファイルの排他的ロックを取得します。これにより、作成したアクセスハンドルを閉じるまで、同じファイルについて FileSystemSyncAccessHandleFileSystemWritableFileStream を作成することはできなくなります。

構文

js
createSyncAccessHandle()

引数

なし

返値

FileSystemSyncAccessHandle オブジェクトで解決する Promise を返します。

例外

InvalidStateError DOMException

FileSystemSyncAccessHandle オブジェクトがオリジンプライベートファイルシステム内のファイルを表していないとき投げられます、

NoModificationAllowedError DOMException

ブラウザーがファイルハンドルに対応するファイルのロックを取得できないとき投げられます。

NotAllowedError DOMException

API レベルで許可されていないとき投げられます。(すなわち、FileSystemHandle.requestPermission が必要です)

以下の非同期のイベントハンドラーは、Web Worker 内にあります。そのうちのこの部分は、同期式ファイルアクセスハンドルを作成します。

js
onmessage = async (e) => {
  // メインスクリプトから送られた処理対象のメッセージを取得する
  const message = e.data;

  // draft ファイルへのハンドルを取得する
  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
# api-filesystemfilehandle-createsyncaccesshandle

ブラウザーの互換性

関連情報