directory_get_files

指定した条件を満たすファイルへのパスのリストを返します。


taiseiue | 2024-05-02

この関数には、古いバージョンがあります。


定義

名前空間: Alice.IO
アセンブリ: Losetta.Runtime.dll
ソースコード: Alice.IO.cs

directory_get_files(string)

指定したディレクトリ内のファイルへのパスのリストを返します。

AliceScript
namespace Alice.IO;
public string[] directory_get_files(string path);
引数
path 検索するディレクトリへのパス
戻り値
string[] 指定したディレクトリ内のファイルへのパスの配列。ただし、条件に一致するファイルが見つからない場合は空の配列。

対応
AliceScript 4
AliceSister 4
Losetta 0.11

directory_get_files(string,string)

指定したディレクトリ内の指定したパターンに一致するファイルへのパスのリストを返します。

AliceScript
namespace Alice.IO;
public string[] directory_get_files(string path, string pattern);
引数
path 検索するディレクトリへのパス
pattern 見つかったファイルの名前と比較するパターン。ワイルドカードを使用できますが、正規表現は使用できません
戻り値
string[] 指定したディレクトリ内のファイルへのパスの配列。ただし、条件に一致するファイルが見つからない場合は空の配列。

対応
AliceScript 4
AliceSister 4
Losetta 0.11

directory_get_files(string,string,bool)

指定したディレクトリ内の指定したパターンに一致するファイルへのパスのリストを返します。

AliceScript
namespace Alice.IO;
public string[] directory_get_files(string path, string pattern, bool searchSubDir);
引数
path 検索するディレクトリへのパス
pattern 見つかったファイルの名前と比較するパターン。ワイルドカードを使用できますが、正規表現は使用できません
searchSubDir すべてのサブディレクトリを含める場合はtruepathで指定されたディレクトリのみを検索する場合はfalse
戻り値
string[] 指定したディレクトリ内のファイルへのパスの配列。ただし、条件に一致するファイルが見つからない場合は空の配列。

対応
AliceScript 4
AliceSister 4
Losetta 0.11

directory_get_files(string,string,bool,bool,bool,bool,bool,number,number)

指定したディレクトリ内の指定したパターンに一致するファイルへのパスのリストを返します。

AliceScript
namespace Alice.IO;
public string[] directory_get_files(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 すべてのサブディレクトリを含める場合はtruepathで指定されたディレクトリのみを検索する場合は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_から始まるすべてのディレクトリを検索します。

matchByWin32Styletrueに設定すると、この関数はWin32スタイルの方式を使用してワイルドカードを照合するようになります。このとき、すでに上記の表で示した*?に加えて、<>"もワイルドカードとみなされます。また、pattern*.*にしていすると、ファイル名にピリオドを含むかによらずすべてのファイルにマッチします。(falseの場合はピリオドを含まないファイルにはマッチしません)

この関数は、directory_getFilesとは異なり、探索中にあるファイルまたはディレクトリへのアクセスが拒否されたときに例外を発生させずに探索を続行します。ignoreInaccessiblefalseにすることで、アクセスが拒否されたときに例外を発生するように設定できます。

maxRecursionDepth0を指定すると、searchSubDirの値によらずサブディレクトリを再帰的に検索しないようになります。

一部のプラットフォームでは、探索のために十分な領域をもつバッファーが必要です。bufferSizeの値を大きくすると、探索中のパフォーマンスが向上する可能性があります。一般に、標準的なバッファーサイズは4096で、大きいとされるサイズは16384です。ただし、bufferSizeでバッファーサイズを指定したとしても、その値がすべてのプラットフォームで使用されるとは限りません。現在スクリプトが実行されているプラットフォーム上のAPIで、バッファーサイズが指定できない場合や結果を取得するには小さすぎる場合には、この値は使用されません。

AliceSisterでの特殊な挙動

patternにアスタリスク(*)を使ったワイルドカードを使用し、かつ3文字の拡張子(*.txtなど)を指定すると、この関数は、指定した拡張子で始まる拡張子を持つファイルも返します。たとえば、*.xlsというパターンでは、book.xlsbook.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というディレクトリ内に存在するすべてのファイルを表示しています。

AliceScript
using Alice.IO;

var files = directory_get_Files("test");
print(files);

次の例では、testというディレクトリ内に存在し、.txtで終わるすべてのファイルを表示しています。

AliceScript
using Alice.IO;

var files = directory_get_Files("test","*.txt");
print(files);