directory_get_entries
指定した条件を満たすファイルおよびディレクトリへのパスのリストを返します。
定義¶
名前空間: Alice.IO
アセンブリ: Losetta.Runtime.dll
ソースコード: Alice.IO.cs
directory_get_entries(string)¶
指定したディレクトリ内のファイルおよびディレクトリへのパスのリストを返します。
| 引数 | |
|---|---|
path |
検索するディレクトリへのパス |
| 戻り値 | |
|---|---|
string[] |
指定したディレクトリ内のファイルおよびディレクトリへのパスの配列。ただし、条件に一致するファイルエントリが見つからない場合は空の配列 |
| 対応 | |
|---|---|
| AliceScript | 4 |
| AliceSister | 4 |
| Losetta | 0.11 |
directory_get_entries(string,string)¶
指定したディレクトリ内の指定したパターンに一致するファイルおよびディレクトリへのパスのリストを返します。
| 引数 | |
|---|---|
path |
検索するディレクトリへのパス |
pattern |
見つかったファイルの名前と比較するパターン。ワイルドカードを使用できますが、正規表現は使用できません |
| 戻り値 | |
|---|---|
string[] |
指定したディレクトリ内のファイルおよびディレクトリへのパスの配列。ただし、条件に一致するファイルエントリが見つからない場合は空の配列 |
| 対応 | |
|---|---|
| AliceScript | 4 |
| AliceSister | 4 |
| Losetta | 0.11 |
directory_get_entries(string,string,bool)¶
指定したディレクトリ内の指定したパターンに一致するファイルおよびディレクトリへのパスのリストを返します。
namespace Alice.IO;
public string[] directory_get_entries(string path, string pattern, bool searchSubDir);
| 引数 | |
|---|---|
path |
検索するディレクトリへのパス |
pattern |
見つかったファイルの名前と比較するパターン。ワイルドカードを使用できますが、正規表現は使用できません |
searchSubDir |
すべてのサブディレクトリを含める場合はtrue、pathで指定されたディレクトリのみを検索する場合はfalse |
| 戻り値 | |
|---|---|
string[] |
指定したディレクトリ内のファイルおよびディレクトリへのパスの配列。ただし、条件に一致するファイルエントリが見つからない場合は空の配列 |
| 対応 | |
|---|---|
| AliceScript | 4 |
| AliceSister | 4 |
| Losetta | 0.11 |
directory_get_entries(string,string,bool,bool,bool,bool,bool,number,number)¶
指定したディレクトリ内の指定したパターンに一致するファイルおよびディレクトリへのパスのリストを返します。
namespace Alice.IO;
public string[] directory_get_entries(string path, string pattern, bool searchSubDir, bool? matchCasing = null, bool matchByWin32Style = false, bool returnSpecialDirectories = false, bool ignoreInaccessible = true, number maxRecursionDepth = 2147483647, number bufferSize = 0);
| 引数 | |
|---|---|
path |
検索するディレクトリへのパス |
pattern |
見つかったファイルの名前と比較するパターン。ワイルドカードを使用できますが、正規表現は使用できません |
searchSubDir |
すべてのサブディレクトリを含める場合はtrue、pathで指定されたディレクトリのみを検索する場合はfalse |
matchCasing |
patternを大文字と小文字を区別して比較する場合はtrue、区別しない場合はfalse、実行しているプラットフォームの既定値を使用する場合はnull。この引数の既定値はnullです。 |
matchByWin32Style |
Windowsスタイルの複雑なパターンマッチを使用する場合はtrue、それ以外の場合はfalse。この引数の既定値はfalseです。 |
returnSpecialDirectories |
検索結果に.と..を含める場合はtrue、それ以外の場合はfalse。この引数の既定値はfalseです。 |
ignoreInaccessible |
アクセスが拒否されたときに例外を発生させず検索を続ける場合はtrue、それ以外の場合はfalse。この引数の既定値はtrueです。 |
maxRecursionDepth |
再帰的にサブディレクトリを探索するとき、探索する最大深さ。この引数の既定値および最大値は2147483647です。 |
bufferSize |
ディレクトリの探索に使用する既定のバッファサイズ(バイト単位)。この引数の既定値は0です。 |
| 戻り値 | |
|---|---|
string[] |
指定したディレクトリ内のファイルおよびディレクトリへのパスの配列。ただし、条件に一致するファイルエントリが見つからない場合は空の配列 |
| 対応 | |
|---|---|
| AliceScript | 4 |
| AliceSister | 該当なし |
| Losetta | 0.11 |
この関数はAliceSisterでは実装されていません。
実装されていない環境では0x034 NOT_IMPLEMENTED例外がスローされます。
説明¶
pathには、相対パスと絶対パスのどちらでも指定できます。
相対パスを指定した場合、カレントディレクトリからの相対パスとして解釈します。
パスの大文字と小文字の区別は、環境およびファイルシステムに依存します。たとえば、NTFSでは大文字と小文字は区別されませんが、LFSでは大文字と小文字が区別されます。
patternにはリテラルとワイルドカードの組み合わせを使用できます。使用できるワイルドカードは以下の通りです。
| パターン | 意味 |
|---|---|
? |
任意の一文字 |
* |
0個以上の任意の文字 |
上記のワイルドカード以外の文字は、すべてリテラル文字です。
たとえば、dir_*はdir_から始まるすべてのディレクトリを検索します。
matchByWin32Styleをtrueに設定すると、この関数はWin32スタイルの方式を使用してワイルドカードを照合するようになります。このとき、すでに上記の表で示した*、?に加えて、<、>、"もワイルドカードとみなされます。また、patternを*.*にしていすると、ファイル名にピリオドを含むかによらずすべてのファイルにマッチします。(falseの場合はピリオドを含まないファイルにはマッチしません)
この関数は、directory_getFilesとは異なり、探索中にあるファイルまたはディレクトリへのアクセスが拒否されたときに例外を発生させずに探索を続行します。ignoreInaccessibleをfalseにすることで、アクセスが拒否されたときに例外を発生するように設定できます。
maxRecursionDepthに0を指定すると、searchSubDirの値によらずサブディレクトリを再帰的に検索しないようになります。
一部のプラットフォームでは、探索のために十分な領域をもつバッファーが必要です。bufferSizeの値を大きくすると、探索中のパフォーマンスが向上する可能性があります。一般に、標準的なバッファーサイズは4096で、大きいとされるサイズは16384です。ただし、bufferSizeでバッファーサイズを指定したとしても、その値がすべてのプラットフォームで使用されるとは限りません。現在スクリプトが実行されているプラットフォーム上のAPIで、バッファーサイズが指定できない場合や結果を取得するには小さすぎる場合には、この値は使用されません。
AliceSisterでの特殊な挙動¶
patternにアスタリスク(*)を使ったワイルドカードを使用し、かつ3文字の拡張子(*.txtなど)を指定すると、この関数は、指定した拡張子で始まる拡張子を持つファイルも返します。たとえば、*.xlsというパターンでは、book.xlsとbook.xlsxの両方を返します。
これは、Windowsがユーザーに見える「長いファイル名」と別に8.3形式と呼ばれる「短いファイル名」を持たせていることに由来します。Windowsではファイル名が8文字を超えたり、拡張子が3文字を超えるファイルについて、通常のファイル名と別に短いファイル名を自動的に付与します。
AliceSisterでのこの関数は、長いファイル名と8.3形式の短いファイル名の両方をチェックするため、8.3形式ではないファイル名に意図せずマッチしてしまう可能性があります。次の表に、AliceSisterとそれ以外の実装でマッチするファイルを示します。
| ディレクトリ内のファイル | 検索パターン | Losettaでの戻り値 | AliceSisterでの戻り値 |
|---|---|---|---|
| file.ai、file.aif | *.ai | file.ai | file.ai |
| book.xls、book.xlsx | *.xls | book.xls | book.xls、book.xlsx |
| file.ai、file.aif | ????.ai | file.ai | file.ai |
| book.xls、book.xlsx | ????.xls | book.xls | book.xls |
AliceScriptおよびAliceSisterでは、この問題は発生しません。
例¶
次の例では、testというディレクトリ内に存在するすべてのファイルとディレクトリ