FileSystemFileHandle.createSyncAccessHandle()
Baseline 2023
Newly available
Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
FileSystemFileHandle
インターフェイスの createSyncAccessHandle()
メソッドは、同期式でファイルを読み書きできる FileSystemSyncAccessHandle
オブジェクトで解決する Promise
を返します。
このメソッドは同期式であることによりパフォーマンス上有利ですが、それ用の Web Workers によるオリジンプライベートファイルシステム内のファイルの操作にのみ用いることができます。
FileSystemSyncAccessHandle
を作成すると、ファイルハンドルに対応するファイルの排他的ロックを取得します。これにより、作成したアクセスハンドルを閉じるまで、同じファイルについて FileSystemSyncAccessHandle
や FileSystemWritableFileStream
を作成することはできなくなります。
構文
createSyncAccessHandle()
引数
なし
返値
FileSystemSyncAccessHandle
オブジェクトで解決する Promise
を返します。
例外
InvalidStateError
DOMException
-
FileSystemSyncAccessHandle
オブジェクトがオリジンプライベートファイルシステム内のファイルを表していないとき投げられます、 NoModificationAllowedError
DOMException
-
ブラウザーがファイルハンドルに対応するファイルのロックを取得できないとき投げられます。
NotAllowedError
DOMException
-
API レベルで許可されていないとき投げられます。(すなわち、
FileSystemHandle.requestPermission
が必要です)
例
以下の非同期のイベントハンドラーは、Web Worker 内にあります。そのうちのこの部分は、同期式ファイルアクセスハンドルを作成します。
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 Standard # api-filesystemfilehandle-createsyncaccesshandle |
ブラウザーの互換性
BCD tables only load in the browser