Directory.GetFiles メソッド

定義

指定した条件を満たすファイルの名前を返します。

オーバーロード

GetFiles(String)

指定したディレクトリ内のファイルの名前 (パスを含む) を返します。

GetFiles(String, String)

指定したディレクトリ内の指定した検索パターンに一致するファイル名 (パスを含む) を返します。

GetFiles(String, String, EnumerationOptions)

指定したディレクトリ内にあり、指定した検索パターンと列挙オプションに一致するファイルの名前 (パスを含む) を返します。

GetFiles(String, String, SearchOption)

指定したディレクトリの中から、指定した検索パターンに一致し、サブディレクトリを検索するかどうかを決定する値を持つファイル名 (パスを含む) を返します。

GetFiles(String)

ソース:
Directory.cs
ソース:
Directory.cs
ソース:
Directory.cs

指定したディレクトリ内のファイルの名前 (パスを含む) を返します。

public static string[] GetFiles (string path);

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。

戻り値

String[]

指定したディレクトリ内のファイルの完全名 (パスを含む) の配列。または、ファイルが見つからない場合は空の配列。

例外

path はファイル名です。

- または -

ネットワーク エラーが発生しました。

呼び出し元に、必要なアクセス許可がありません。

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列、空白のみを含む、または 1 つ以上の無効な文字を含みます。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

pathnullです。

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

指定されたパスが見つからないか正しくありません (たとえば、マップされていないドライブ上のパスなど)。

次の例では、 メソッドを使用して、ユーザー指定の GetFiles 場所からファイル名を返す方法を示します。 この例は、このメソッドに共通するすべてのエラーをキャッチするように構成されています。

// For Directory.GetFiles and Directory.GetDirectories
// For File.Exists, Directory.Exists
using System;
using System.IO;
using System.Collections;

public class RecursiveFileProcessor
{
    public static void Main(string[] args)
    {
        foreach(string path in args)
        {
            if(File.Exists(path))
            {
                // This path is a file
                ProcessFile(path);
            }
            else if(Directory.Exists(path))
            {
                // This path is a directory
                ProcessDirectory(path);
            }
            else
            {
                Console.WriteLine("{0} is not a valid file or directory.", path);
            }
        }
    }

    // Process all files in the directory passed in, recurse on any directories
    // that are found, and process the files they contain.
    public static void ProcessDirectory(string targetDirectory)
    {
        // Process the list of files found in the directory.
        string [] fileEntries = Directory.GetFiles(targetDirectory);
        foreach(string fileName in fileEntries)
            ProcessFile(fileName);

        // Recurse into subdirectories of this directory.
        string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
        foreach(string subdirectory in subdirectoryEntries)
            ProcessDirectory(subdirectory);
    }

    // Insert logic for processing found files here.
    public static void ProcessFile(string path)
    {
        Console.WriteLine("Processed file '{0}'.", path);	
    }
}

注釈

メソッドと GetFiles メソッドはEnumerateFiles次のように異なります。を使用EnumerateFilesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetFilesする場合は、名前の配列全体が返されるのを待ってから、配列にアクセスする必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateFiles の方が効率的です。

返されたファイル名は、指定された path パラメーターに追加されます。

このメソッドは、検索パターンとしてアスタリスク (*) を指定した場合と同じです GetFiles(String, String)

パラメーターは path 、相対パスまたは絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory

返されるファイル名の順序は保証されません。特定の Sort 並べ替え順序が必要な場合は、 メソッドを使用します。

パラメーターの大文字と小文字の path 区別は、コードが実行されているファイル システムの大文字と小文字が区別されます。 たとえば、NTFS (既定の Windows ファイル システム) では大文字と小文字が区別されず、Linux ファイル システムでは大文字と小文字が区別されます。

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetFiles(String, String)

ソース:
Directory.cs
ソース:
Directory.cs
ソース:
Directory.cs

指定したディレクトリ内の指定した検索パターンに一致するファイル名 (パスを含む) を返します。

public static string[] GetFiles (string path, string searchPattern);

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。

searchPattern
String

path 内のファイル名と対応させる検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。

戻り値

String[]

指定したディレクトリ内の指定した検索パターンに一致するファイルの完全名 (パスを含む) の配列。または、ファイルが見つからない場合は空の配列。

例外

path はファイル名です。

- または -

ネットワーク エラーが発生しました。

呼び出し元に、必要なアクセス許可がありません。

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列、空白のみを含む、または 1 つ以上の無効な文字を含みます。 GetInvalidPathChars() を使用して、正しくない文字を検出するクエリを実行できます。

- または -

searchPattern には有効なパターンが含まれていません。

path または searchPatternnull です。

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

指定されたパスが見つからないか正しくありません (たとえば、マップされていないドライブ上のパスなど)。

次の例では、指定した文字で始まるファイルの数をカウントします。

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());
        }
    }
}

注釈

返されたファイル名は指定された path パラメーターに追加され、返されるファイル名の順序は保証されません。特定の並べ替え順序が必要な場合は、 メソッドを使用 Sort します。

searchPattern にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern使用できます。

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置の 0 個以上の文字。
? (疑問符) その位置の 1 文字だけ。

ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern 文字列 "*t" は文字 "t" で path 終わるすべての名前を検索します。 searchPattern文字列 "s*" は、文字 "s" でpath始まるすべての名前を検索します。

searchPattern は、2 つのピリオド ("..") で終わることも、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを含めることも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。

注意

.NET Framework のみ:searchPattern アスタリスクワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、このメソッドは、指定した拡張子で 始まる 拡張子を持つファイルも返します。 たとえば、検索パターン "*.xls" は "book.xls" と "book.xlsx" の両方を返します。 この動作は、検索パターンでアスタリスクが使用され、指定されたファイル拡張子が正確に 3 文字である場合にのみ発生します。 検索パターンのどこかで疑問符のワイルドカード文字を使用する場合、このメソッドは指定されたファイル拡張子と完全に一致するファイルのみを返します。 次の表は、.NET Framework でのこの異常を示しています。

ディレクトリ内のファイル 検索パターン .NET 5 以降の 戻り値 .NET Framework から が返される
file.ai、file.aif *。Ai file.ai file.ai
book.xls、book.xlsx *.xls book.xls book.xls、book.xlsx
ello.txt、hello.txt、hello.txtt ?ello.txt hello.txt hello.txt

注意

このメソッドは、8.3 ファイル名形式と長いファイル名形式の両方を持つファイル名をチェックするため、"*1*.txt" のような検索パターンで予期しないファイル名が返される場合があります。 たとえば、"*1*.txt" の検索パターンを使用すると、同等の 8.3 ファイル名形式が "LONGFI~1.TXT" であるため、"longfilename.txt" が返されます。

メソッドと GetFiles メソッドはEnumerateFiles次のように異なります。を使用EnumerateFilesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetFilesする場合は、名前の配列全体が返されるのを待ってから、配列にアクセスする必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateFiles の方が効率的です。

パラメーターは path 、相対パスまたは絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory

パラメーターの大文字と小文字の path 区別は、コードが実行されているファイル システムの大文字と小文字が区別されます。 たとえば、NTFS (既定の Windows ファイル システム) では大文字と小文字が区別されず、Linux ファイル システムでは大文字と小文字が区別されます。

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetFiles(String, String, EnumerationOptions)

ソース:
Directory.cs
ソース:
Directory.cs
ソース:
Directory.cs

指定したディレクトリ内にあり、指定した検索パターンと列挙オプションに一致するファイルの名前 (パスを含む) を返します。

public static string[] GetFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。

searchPattern
String

path 内のファイル名と対応させる検索文字列。 このパラメーターに、有効なリテラルのパスとワイルドカード文字の組み合わせを含めることができますが、正規表現はサポートされていません。

enumerationOptions
EnumerationOptions

使用する検索と列挙の構成を記述するオブジェクト。

戻り値

String[]

指定したディレクトリ内にあり、指定した検索パターンおよび列挙オプションに一致するファイルの完全名 (パスを含む) の配列。または、ファイルが見つからない場合は空の配列。

例外

path はファイル名です。

- または -

ネットワーク エラーが発生しました。

呼び出し元に、必要なアクセス許可がありません。

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列、空白のみを含む、または 1 つ以上の無効な文字を含みます。 GetInvalidPathChars() を使用して、正しくない文字を検出するクエリを実行できます。

- または -

searchPattern には有効なパターンが含まれていません。

path または searchPatternnull です。

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

指定されたパスが見つからないか正しくありません (たとえば、マップされていないドライブ上のパスなど)。

注釈

返されたファイル名は指定された path パラメーターに追加され、返されるファイル名の順序は保証されません。特定の並べ替え順序が必要な場合は、 メソッドを使用 Sort します。

searchPattern にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern使用できます。

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置の 0 個以上の文字。
? (疑問符) その位置の 1 文字だけ。

ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern 文字列 "*t" は文字 "t" で path 終わるすべての名前を検索します。 searchPattern文字列 "s*" は、文字 "s" でpath始まるすべての名前を検索します。

searchPattern は、2 つのピリオド ("..") で終わることも、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを含めることも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。

注意

.NET Framework のみ:searchPattern アスタリスクワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、このメソッドは、指定した拡張子で 始まる 拡張子を持つファイルも返します。 たとえば、検索パターン "*.xls" は "book.xls" と "book.xlsx" の両方を返します。 この動作は、検索パターンでアスタリスクが使用され、指定されたファイル拡張子が正確に 3 文字である場合にのみ発生します。 検索パターンのどこかで疑問符のワイルドカード文字を使用する場合、このメソッドは指定されたファイル拡張子と完全に一致するファイルのみを返します。 次の表は、.NET Framework でのこの異常を示しています。

ディレクトリ内のファイル 検索パターン .NET 5 以降の 戻り値 .NET Framework から が返される
file.ai、file.aif *。Ai file.ai file.ai
book.xls、book.xlsx *.xls book.xls book.xls、book.xlsx
ello.txt、hello.txt、hello.txtt ?ello.txt hello.txt hello.txt

注意

このメソッドは、8.3 ファイル名形式と長いファイル名形式の両方を持つファイル名をチェックするため、"*1*.txt" のような検索パターンで予期しないファイル名が返される場合があります。 たとえば、"*1*.txt" の検索パターンを使用すると、同等の 8.3 ファイル名形式が "LONGFI~1.TXT" であるため、"longfilename.txt" が返されます。

メソッドと GetFiles メソッドはEnumerateFiles次のように異なります。を使用EnumerateFilesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetFilesする場合は、名前の配列全体が返されるのを待ってから、配列にアクセスする必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateFiles の方が効率的です。

パラメーターは path 、相対パスまたは絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory

パラメーターの大文字と小文字の path 区別は、コードが実行されているファイル システムの大文字と小文字が区別されます。 たとえば、NTFS (既定の Windows ファイル システム) では大文字と小文字が区別されず、Linux ファイル システムでは大文字と小文字が区別されます。

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

GetFiles(String, String, SearchOption)

ソース:
Directory.cs
ソース:
Directory.cs
ソース:
Directory.cs

指定したディレクトリの中から、指定した検索パターンに一致し、サブディレクトリを検索するかどうかを決定する値を持つファイル名 (パスを含む) を返します。

public static string[] GetFiles (string path, string searchPattern, System.IO.SearchOption searchOption);

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。 この文字列の大文字と小文字は区別されません。

searchPattern
String

path 内のファイル名と対応させる検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。

searchOption
SearchOption

検索操作にすべてのサブディレクトリを含めるのか、または現在のディレクトリのみを含めるのかを指定する列挙値の 1 つ。

戻り値

String[]

指定したディレクトリ内の指定した検索パターンおよびオプションに一致するファイルの完全名 (パスを含む) の配列。または、ファイルが見つからない場合は空の配列。

例外

2.1 より前のバージョンの .NET Framework と .NET Core: path は長さ 0 の文字列、空白のみを含む、または 1 つ以上の無効な文字を含みます。 GetInvalidPathChars() メソッドを使用して、正しくない文字に対するクエリを実行できます。

- または -

searchPattern には有効なパターンが含まれません。

path または searchpatternnull です。

searchOption は正しい SearchOption 値ではありません。

呼び出し元に、必要なアクセス許可がありません。

指定されたパスが見つからないか正しくありません (たとえば、マップされていないドライブ上のパスなど)。

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

path はファイル名です。

- または -

ネットワーク エラーが発生しました。

注釈

返されたファイル名は指定されたパラメーター path に追加され、返されるファイル名の順序は保証されません。特定の並べ替え順序が必要な場合は、 メソッドを使用 Sort します。

searchPattern にはリテラル文字とワイルドカード文字の組み合わせを指定できますが、正規表現はサポートされていません。 では、次のワイルドカード指定子を searchPattern使用できます。

ワイルドカード指定子 [一致する]
* (アスタリスク) その位置の 0 個以上の文字。
? (疑問符) その位置の 1 文字だけ。

ワイルドカード以外の文字はリテラル文字です。 たとえば、 searchPattern 文字列 "*t" は文字 "t" で path 終わるすべての名前を検索します。 searchPattern文字列 "s*" は、文字 "s" でpath始まるすべての名前を検索します。

searchPattern は、2 つのピリオド ("..") で終わることはできません。また、2 つのピリオド ("..") の後 DirectorySeparatorChar に または AltDirectorySeparatorCharを指定することも、無効な文字を含めることもできます。 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。

注意

.NET Framework のみ:searchPattern アスタリスク ワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、このメソッドは、指定した拡張子で 始まる 拡張子を持つファイルも返します。 たとえば、検索パターン "*.xls" は "book.xls" と "book.xlsx" の両方を返します。 この動作は、検索パターンでアスタリスクが使用され、指定されたファイル拡張子が 3 文字の場合にのみ発生します。 検索パターンのどこかで疑問符ワイルドカード文字を使用する場合、このメソッドは指定されたファイル拡張子と完全に一致するファイルのみを返します。 次の表は、.NET Framework でのこの異常を示しています。

ディレクトリ内のファイル 検索パターン .NET 5 以降の戻り値 .NET Framework から返される
file.ai、file.aif *。Ai file.ai file.ai
book.xls、book.xlsx *.xls book.xls book.xls、book.xlsx
ello.txt、hello.txt、hello.txtt ?ello.txt hello.txt hello.txt

注意

このメソッドは、8.3 ファイル名形式と長いファイル名形式の両方を持つファイル名をチェックするため、"*1*.txt" のような検索パターンで予期しないファイル名が返される場合があります。 たとえば、"*1*.txt" の検索パターンを使用すると、同等の 8.3 ファイル名形式が "LONGFI~1.TXT" であるため、"longfilename.txt" が返されます。

メソッドと GetFiles メソッドはEnumerateFiles次のように異なります。を使用EnumerateFilesすると、コレクション全体が返される前に名前のコレクションの列挙を開始できます。を使用GetFilesする場合は、配列にアクセスする前に、名前の配列全体が返されるのを待つ必要があります。 そのため、多くのファイルとディレクトリを操作する場合は、 EnumerateFiles の方が効率的です。

ファイル名には、完全なパスが含まれます。

パラメーターは path 、相対パス情報または絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory

パラメーターの大文字と小文字の path 区別は、コードが実行されているファイル システムの大文字と小文字が区別されます。 たとえば、NTFS (既定の Windows ファイル システム) では大文字と小文字が区別されず、Linux ファイル システムでは大文字と小文字が区別されます。

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0