Origin private file system
File System Access API の FileSystemDirectoryHandle インターフェイスは、ファイルシステムのディレクトリーへのハンドルを提供します。
このインターフェイスは、メソッド window.showDirectoryPicker()・StorageManager.getDirectory()・DataTransferItem.getAsFileSystemHandle()・FileSystemDirectoryHandle.getDirectoryHandle() からアクセス可能です。
FileSystemHandle FileSystemDirectoryHandle
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 86 | 86 | 111 | 15.2 | 109 | 15.2 | |
| FileSystemDirectoryHandle インターフェイスの entries() メソッドは、for...in が提供するのと同じ順序でオブジェクト自身の列挙可能なプロパティの [key, value] ペアの配列を返します。(違いは、for-in ループはプロトタイプチェーン内のプロパティも列挙することです) | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemDirectoryHandle インターフェイスの getDirectoryHandle() メソッドは、このメソッドが呼ばれたディレクトリーハンドル内の指定した名前のサブディレクトリーを表す FileSystemDirectoryHandle を返します。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemDirectoryHandle インターフェイスの getFileHandle() メソッドは、メソッドが呼ばれたディレクトリー内の指定した名前のファイルを表す FileSystemFileHandle を返します。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemDirectoryHandle インターフェイスの keys() メソッドは、FileSystemDirectoryHandle 内の各アイテムのキーを含む新しい 配列イテレーター を返します。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemDirectoryHandle インターフェイスの removeEntry() メソッドは、指定の名前のファイルまたはディレクトリーがディレクトリーハンドル内に存在する場合、エントリーを削除しようとします。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemDirectoryHandle インターフェイスの resolve() メソッドは、親ハンドルから指定の子エントリーへのディレクトリー名の Array を返します。指定された子エントリーが配列の最後の要素になります。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemDirectoryHandle インターフェイスの values() メソッドは、FileSystemDirectoryHandle オブジェクト内の各インデックスに対応する値を含む新しい 配列イテレーター を返します。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| File System Access API の FileSystemFileHandle インターフェイスは、ファイルシステムのエントリーのハンドルを表します。このインターフェイスには、window.showOpenFilePicker() メソッドを通じてアクセスします。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemFileHandle インターフェイスの createSyncAccessHandle() メソッドは、同期式でファイルを読み書きできる FileSystemSyncAccessHandle オブジェクトで解決する Promise を返します。 このメソッドは同期式であることによりパフォーマンス上有利ですが、それ用の Web Workers によるオリジンプライベートファイルシステム内のファイルの操作にのみ用いることができます。 | 102 | 102 | 111 | 15.2 | 109 | 15.2 |
| FileSystemFileHandle インターフェイスの getFile() メソッドは、ハンドルが表すエントリーのディスク上の状態を表す File オブジェクトで解決する Promise を返します。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| File System Access API の FileSystemHandle インターフェイスは、ファイルまたはディレクトリーのエントリーを表すオブジェクトです。複数のハンドルが同じエントリーを表す可能性もあります。FileSystemHandle を直接扱う場面はほとんどなく、子インターフェイスの FileSystemFileHandle や FileSystemDirectoryHandle を扱うでしょう。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemHandle インターフェイスの isSameEntry() メソッドは、2 個のFileSystemHandleを比較し、対応するエントリー (ファイルまたはディレクトリー) が一致するかを確認します。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemHandle の読み取り専用プロパティ kind は、エントリーの種類を返します。'file' (対応するエントリーがファイルである場合) または 'directory' が返ります。これは、ディレクトリーの中身について反復するとき、ファイルとディレクトリーを区別するために用いられます。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| FileSystemHandle インターフェイスの読み取り専用プロパティ name は、ハンドルが表すエントリーの名前を返します。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
| File System Access API の FileSystemSyncAccessHandle インターフェイスは、ファイルシステムのエントリーを扱う同期式のハンドルを表します。ファイルの読み書きにおける同期式であるという性質は、WebAssembly などの非同期操作が高いオーバーヘッドに繋がる状況における重要なメソッドのパフォーマンスを高めることができます。 | 102 | 102 | 111 | 15.2 | 109 | 15.2 |
| FileSystemSyncAccessHandle インターフェイスの close() メソッドは、開かれている同期式ファイルハンドルを閉じます。これ以降操作はできなくなり、ファイルハンドルに対応するファイルにかけた排他的ロックを解除します。 | 102 | 102 | 111 | 15.2 | 109 | 15.2 |
close (sync version) `close()` メソッドの同期的な実装 | 108 | 108 | 111 | 16.4 | 109 | 16.4 |
| FileSystemSyncAccessHandle インターフェイスの flush() メソッドは、ハンドルに対応するファイルに FileSystemSyncAccessHandle.write メソッドにより行われたすべての変更をディスクに保存します。 | 102 | 102 | 111 | 15.2 | 109 | 15.2 |
flush (sync version) `flush()` メソッドの同期的な実装 | 108 | 108 | 111 | 16.4 | 109 | 16.4 |
| FileSystemSyncAccessHandle インターフェイスの getSize() メソッドは、ハンドルに対応するファイルのサイズをバイト単位で返します。 | 102 | 102 | 111 | 15.2 | 109 | 15.2 |
getSize (sync version) `getSize()` メソッドの同期実装 | 108 | 108 | 111 | 16.4 | 109 | 16.4 |
| FileSystemSyncAccessHandle インターフェイスの read() メソッドは、ハンドルに対応するファイルの内容を指定のバッファーに読み込みます。オフセットを指定することもできます。 | 102 | 102 | 111 | 15.2 | 109 | 15.2 |
| FileSystemSyncAccessHandle インターフェイスの truncate() メソッドは、ハンドルに対応するファイルのサイズを指定のバイト数にします。 | 102 | 102 | 111 | 15.2 | 109 | 15.2 |
truncate (sync version) `truncate()` メソッドの同期実装 | 108 | 108 | 111 | 16.4 | 109 | 16.4 |
| FileSystemSyncAccessHandle インターフェイスの write() メソッドは、指定のバッファーの内容をハンドルに対応するファイルに書き込みます。オフセットを指定することもできます。ArrayBuffer の内容を直接操作することはできないことに注意してください。かわりに、バッファーを指定の形式で表す Int8Array などの型付き配列オブジェクトの一つ、または DataView オブジェクトを作成し、それを用いてバッファーの内容を読み書きします。 | 102 | 102 | 111 | 15.2 | 109 | 15.2 |
| StorageManager インターフェイスの getDirectory() メソッドは、オリジンプライベートファイルシステム (OPFS) に保存されたディレクトリーとその中身へのアクセスを可能にする FileSystemDirectoryHandle オブジェクトへの参照を取得するために使用されます。 | 86 | 86 | 111 | 15.2 | 109 | 15.2 |
実務での使いどころ
-
Origin private file system の活用
File System Access API の FileSystemDirectoryHandle インターフェイスは、ファイルシステムのディレクトリーへのハンドルを提供します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。