このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
FileSystemDirectoryEntry: getDirectory() メソッド
FileSystemDirectoryEntry インターフェイスのメソッド getDirectory() は、呼び出されたディレクトリーをルートとするディレクトリーサブツリーのどこかに格納されているディレクトリーに対応する FileSystemDirectoryEntry オブジェクトを返します。
構文
getDirectory()
getDirectory(path)
getDirectory(path, options)
getDirectory(path, options, successCallback)
getDirectory(path, options, successCallback, errorCallback)
引数
path省略可-
メソッドが呼び出されたディレクトリーへの絶対パスまたは相対パスを表す文字列で、どのディレクトリー項目を返すかを記述します。 絶対パスはセキュリティ上の理由から使用することができない場合があります。
options省略可-
項目がない場合に作成するかどうか、ファイルがすでに存在する場合にエラーとするかどうかを指定するオブジェクトです。これらのオプションは、現在のところウェブのコンテキストでは有益ではありません。 詳しくは options 引数の節を参照してください。
successCallback省略可-
FileSystemDirectoryEntryが作成されたら呼び出されるメソッド。このメソッドは単一の引数、つまり問題のディレクトリーを表すFileSystemDirectoryEntryオブジェクトを受け取ります。 errorCallback省略可-
エラーが発生した場合に呼び出されるメソッドです。唯一の引数として、発生したエラーを説明する
DomExceptionオブジェクトを受け取ります。
options 引数
options 引数オブジェクトは、以下の引数を受け入れます。
create省略可-
このプロパティが
trueで、リクエストされたディレクトリーが存在しない場合、ユーザーエージェントはそれを作成する必要があります。 既定値はfalseです。 親ディレクトリーはすでに存在している必要があります。 exclusive省略可-
もし
trueでcreateオプションもtrueであれば、呼び出す前にディレクトリーが存在してはいけません。 その代わり、呼び出し時に新たに作成することが可能でなければなりません。 既定値はfalseです。この引数はcreateがfalseの場合には無視されます。
下記の表は、対象とするディレクトリーのパスが既に存在するかどうかに応じて、これらのフラグを可能な限り組み合わせた場合の結果を記述したものです。
create オプション |
exclusive オプション |
パスの条件 | 結果 |
|---|---|---|---|
false |
無視 | パスが存在してディレクトリーである | successCallback が FileSystemDirectoryEntry で呼び出される。 |
false |
無視 | パスが存在しているがファイルである | errorCallback が適切なエラーコードで呼び出される(コールバックが提供されていた場合)。 |
true |
false |
パスが存在する | 既存のディレクトリーが除去され、新しいディレクトリーに置き換わる。次に successCallback が FileSystemDirectoryEntry で呼び出される。 |
true |
false |
パスが存在しない | ディレクトリーが作成され、FileSystemDirectoryEntry が successCallback に渡される。 |
true |
true |
パスが存在する | errorCallback は FileError.PATH_EXISTS_ERR のような適切なエラーで呼び出されます。 |
true |
true |
パスが存在しない | ディレクトリーが作成され、FileSystemDirectoryEntry が successCallback に渡される。 |
返値
なし (undefined)。
例外
NotFoundErrorDOMException-
createオプションが指定されず(またはfalseを指定します)、ディレクトリーが存在しない場合に発生します。 SecurityErrorDOMException-
ディレクトリーへのアクセスリクエストがセキュリティ上の理由で拒否された場合に発生します。
TypeMismatchErrorDOMException-
指定したパスがディレクトリーでない場合に発生します。おそらくファイルですが、パイプのような対応していないファイル記述子かもしれません。
例
この例では、指定した言語のユーザー辞書を含む JSON ファイルをユーザーのアプリデータディレクトリー内に格納し、その辞書を読み込むことを仕事とする関数を表示しています。
let dictionary = null;
function loadDictionaryForLanguage(appDataDirEntry, lang) {
dictionary = null;
appDataDirEntry.getDirectory("Dictionaries", {}, (dirEntry) => {
dirEntry.getFile(`${lang}-dict.json`, {}, (fileEntry) => {
fileEntry.file((dictFile) => {
let reader = new FileReader();
reader.addEventListener("loadend", () => {
dictionary = JSON.parse(reader.result);
});
reader.readAsText(dictFile);
});
});
});
}
loadDictionaryForLanguage() 関数は、まず getDirectory() を使用して、指定したアプリのデータディレクトリー内にある "Dictionaries" という名前のサブフォルダーを表す FileSystemDirectoryEntry オブジェクトを取得します。この成功コールバックは、結果のディレクトリー項目オブジェクトを受け取り、getFile() を呼び出して、辞書ファイルを表す FileSystemFileEntry オブジェクトを取得します。読み込みが成功すると (loadend イベントが発生することで示されます)、読み込まれたテキストは JSON.parse() に渡され、JavaScript オブジェクトに再構成されます。
仕様書
| Specification |
|---|
| File and Directory Entries API> # dom-filesystemdirectoryentry-getdirectory> |
ブラウザーの互換性
Loading...