Directory.GetFiles メソッド (String, String)
更新 : 2007 年 11 月
指定したディレクトリ内の指定した検索パターンに一致するファイル名を返します。
アセンブリ : mscorlib (mscorlib.dll 内)
パラメータ
- path
- 型 : System.String
検索するディレクトリ。
- searchPattern
- 型 : System.String
path 内のファイル名と対応させる検索文字列。このパラメータは、2 つのピリオド ("..") で終了することはできません。また、2 つのピリオド ("..") に続けて DirectorySeparatorChar または AltDirectorySeparatorChar を指定したり、InvalidPathChars の文字を含めたりすることはできません。
例外 | 条件 |
---|---|
UnauthorizedAccessException |
呼び出し元に、必要なアクセス許可がありません。 |
ArgumentException |
path が、長さが 0 の文字列であるか、空白しか含んでいないか、または InvalidPathChars で定義されている無効な文字を 1 つ以上含んでいます。 または searchPattern に、有効なパターンが含まれていません。 |
ArgumentNullException |
path または searchPattern が null です。 |
PathTooLongException |
指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。たとえば、Windows ベースのプラットフォームの場合、パスの長さは 248 文字未満、ファイル名の長さは 260 文字未満である必要があります。 |
DirectoryNotFoundException |
指定したパスが無効です (割り当てられていないドライブであるなど)。 |
返されるファイル名は、指定された path パラメータの末尾に追加されます。
ファイルが存在しない場合、または searchPattern パラメータに一致するファイルがない場合、このメソッドは空の配列を返します。
返されるファイル名の順序は保証されません。特定の並べ替え順序が必要な場合は、Sort() メソッドを使用します。
searchPattern で許可されるワイルドカード指定子を次に示します。
ワイルドカード文字 |
説明 |
---|---|
* |
0 個以上の文字。 |
? |
0 文字または 1 文字。 |
ワイルドカード指定子以外の文字は、その文字自体を表します。たとえば、searchPattern 文字列 "*t" は、path 内で、文字 "t" で終わるすべての名前を検索します。searchPattern 文字列 "s*" は、path 内で、文字 "s" で始まるすべての名前を検索します。
|
---|
searchPattern で "*.txt" などのアスタリスクのワイルドカード文字を使用した場合、拡張子の長さがちょうど 3 文字の場合と 3 文字以外の場合では、一致の仕方が変わります。searchPattern にちょうど 3 文字の拡張子が指定されていると、searchPattern に指定されている拡張子と最初の 3 文字が一致していて、3 文字以上の拡張子を持つファイルが返されます。searchPattern に 1 文字、2 文字、または 4 文字以上の拡張子が指定されていると、searchPattern に指定されている拡張子と一致していて、それと同じ長さの拡張子を持つファイルのみが返されます。疑問符のワイルドカード文字を使用した場合、このメソッドは、指定された拡張子と一致するファイルのみを返します。たとえば、ディレクトリ内に "file1.txt" と "file1.txtother" という 2 つのファイルが存在する場合、"file?.txt" という検索パターンでは 1 つ目のファイルのみが返されますが、"file*.txt" の検索パターンでは両方のファイルが返されます。 |
searchPattern パラメータにさまざまな長さが設定された場合の動作を次のリストに示します。
-
"*.abc" の場合、拡張子が .abc、.abcd、.abcde、.abcdef などになるファイルが返されます。
-
"*.abcd" の場合、拡張子が .abcd のファイルだけが返されます。
-
"*.abcde" の場合、拡張子が .abcde のファイルだけが返されます。
-
"*.abcdef" の場合、拡張子が .abcdef のファイルだけが返されます。
|
---|
このメソッドは、8.3 形式のファイル名と長いファイル名の両方の形式を使用してファイル名をチェックするため、"*1*.txt" に類似した検索パターンを使用すると予期しないファイル名が返されることがあります。たとえば、"*1*.txt" という検索パターンを使用すると "longfilename.txt" が返されます。その理由は、このファイル名は 8.3 形式で "LONGFI~1.TXT" となるためです。 |
path パラメータは、相対パス情報または絶対パス情報を指定することを許可されています。相対パス情報は、現在の作業ディレクトリに対して相対的に解釈されます。現在の作業ディレクトリを取得するには、GetCurrentDirectory のトピックを参照してください。
path パラメータでは大文字と小文字が区別されません。
共通 I/O タスクの一覧については、「共通 I/O タスク」を参照してください。
指定した文字で始まるファイルの数をカウントするコード例を次に示します。
using System; using System.IO; class Test { public static void Main() { try { // Only get files that begin with the letter "c." string[] dirs = Directory.GetFiles(@"c:\", "c*"); Console.WriteLine("The number of files starting with c is {0}.", dirs.Length); foreach (string dir in dirs) { Console.WriteLine(dir); } } catch (Exception e) { Console.WriteLine("The process failed: {0}", e.ToString()); } } }
import System.*; import System.IO.*; class Test { public static void main(String[] args) { try { // Only get files that begin with the letter "c." String dirs[] = Directory.GetFiles("c:\\", "c*"); Console.WriteLine("The number of files starting with c is {0}.", (Int32)dirs.length); String dir = ""; for ( int iCtr=0; iCtr < dirs.length ; iCtr++ ) { dir = dirs[iCtr]; Console.WriteLine(dir); } } catch (System.Exception e) { Console.WriteLine("The process failed: {0}", e.ToString()); } } //main } //Test
-
FileIOPermission
(現在のディレクトリのパス情報にアクセスするために必要なアクセス許可)。FileIOPermissionAccess.PathDiscovery (関連する列挙体)
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。