Directory.EnumerateFiles メソッド

定義

指定された条件を満たすファイルの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of full file names that meet specified criteria.

オーバーロード

EnumerateFiles(String, String, EnumerationOptions)

指定したパス内にあり、検索パターンと列挙オプションに一致する、ファイルの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。Returns an enumerable collection of full file names that match a search pattern and enumeration options in a specified path, and optionally searches subdirectories.

EnumerateFiles(String, String, SearchOption)

指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。Returns an enumerable collection of full file names that match a search pattern in a specified path, and optionally searches subdirectories.

EnumerateFiles(String)

指定されたパスに存在するファイルの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of full file names in a specified path.

EnumerateFiles(String, String)

指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of full file names that match a search pattern in a specified path.

EnumerateFiles(String, String, EnumerationOptions)

指定したパス内にあり、検索パターンと列挙オプションに一致する、ファイルの完全名の列挙可能なコレクションを返します。必要に応じて、サブディレクトリを検索します。Returns an enumerable collection of full file names that match a search pattern and enumeration options in a specified path, and optionally searches subdirectories.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of String)

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。The relative or absolute path to the directory to search. この文字列の大文字と小文字は区別されません。This string is not case-sensitive.

searchPattern
String

path 内のファイル名と対応させる検索文字列。The search string to match against the names of files in path. このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

enumerationOptions
EnumerationOptions

使用する検索と列挙の構成を記述するオブジェクト。An object that describes the search and enumeration configuration to use.

戻り値

IEnumerable<String>

path で指定したディレクトリ内にあり、指定した検索パターンおよび列挙オプションと一致する、ファイルの完全名 (パスを含む) の列挙可能なコレクション。An enumerable collection of the full names (including paths) for the files in the directory specified by path and that match the specified search pattern and enumeration options.

例外

path は長さゼロの文字列で、空白のみで構成されているか、または無効な文字が使用されています。path is a zero-length string, contains only white space, or contains invalid characters. 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars() method.

- または --or- searchPattern には有効なパターンが含まれません。searchPattern does not contain a valid pattern.

pathnullです。path is null.

または-or- searchPatternnullです。searchPattern is null.

searchOption は正しい SearchOption 値ではありません。searchOption is not a valid SearchOption value.

たとえば、マップされていないドライブへの参照など、path は無効です。path is invalid, such as referring to an unmapped drive.

path はファイル名です。path is a file name.

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。The specified path, file name, or combined exceed the system-defined maximum length.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

注釈

searchPattern には、リテラル文字とワイルドカード文字の組み合わせを使用できますが、正規表現はサポートされていません。searchPattern can be a combination of literal and wildcard characters, but it doesn't support regular expressions. では、次のワイルドカード指定子を使用でき searchPattern ます。The following wildcard specifiers are permitted in searchPattern.

ワイルドカード指定子Wildcard specifier [一致する]Matches
* アスタリスク* (asterisk) その位置に0個以上の文字が含まれています。Zero or more characters in that position.
?? (疑問符)(question mark) その位置に0個または1個の文字。Zero or one character in that position.

ワイルドカード以外の文字はリテラル文字です。Characters other than the wildcard are literal characters. たとえば、 searchPattern 文字列 " * t" は、 path 末尾に文字 "t" が付いているすべての名前を検索します。For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". searchPattern文字列 "s" は、 * path 文字 "s" で始まるすべての名前を検索します。The searchPattern string "s*" searches for all names in path beginning with the letter "s".

注意

.NET Framework のみ: でアスタリスクのワイルドカード文字を使用 searchPattern し、".txt" などの3文字のファイル拡張子を指定すると * 、このメソッドは、指定された拡張子で 始まる 拡張子を持つファイルも返します。.NET Framework only: When you use the asterisk wildcard character in searchPattern and you specify a three-character file extension, for example, "*.txt", this method also returns files with extensions that begin with the specified extension. たとえば、検索パターン ".xls" では、 * "book.xls" と "book.xlsx" の両方が返されます。For example, the search pattern "*.xls" returns both "book.xls" and "book.xlsx". この動作は、検索パターンでアスタリスクが使用されていて、指定されたファイル拡張子が正確に3文字の場合にのみ発生します。This behavior only occurs if an asterisk is used in the search pattern and the file extension provided is exactly three characters. アスタリスクの代わりに疑問符のワイルドカード文字を使用すると、このメソッドは、指定されたファイル拡張子に一致するファイルだけを返します。If you use the question mark wildcard character instead of the asterisk, this method returns only files that match the specified file extension exactly. 次の表は、.NET Framework での異常を示しています。The following table depicts this anomaly in .NET Framework.

ディレクトリ内のファイルFiles in directory 検索パターンSearch pattern .NET 5 以降の戻り値.NET 5+ returns .NET Framework の戻り値.NET Framework returns
file.ai、ファイル. aiffile.ai, file.aif * ai*.ai file.aifile.ai file.aifile.ai
book.xls、book.xlsxbook.xls, book.xlsx * .xls*.xls book.xlsbook.xls book.xls、book.xlsxbook.xls, book.xlsx
file.ai、ファイル. aiffile.ai, file.aif ?.ai?.ai file.aifile.ai file.aifile.ai
book.xls、book.xlsxbook.xls, book.xlsx ?.xls?.xls book.xlsbook.xls book.xlsbook.xls

searchPattern 2つのピリオド ("..") で終了することはできません。また、2つのピリオド ("..") に続けて DirectorySeparatorChar または AltDirectorySeparatorChar を指定することも、無効な文字を含めることもできません。searchPattern cannot end in two periods ("..") or contain two periods ("..") followed by DirectorySeparatorChar or AltDirectorySeparatorChar, nor can it contain any invalid characters. 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars method.

相対パス情報は、パラメーターを使用して指定でき path ます。You can specify relative path information with the path parameter. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。これは、メソッドを使用して判断でき GetCurrentDirectory ます。Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method.

EnumerateFilesメソッドとメソッドは次のように GetFiles 異なります。を使用すると EnumerateFiles 、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned. を使用する場合は GetFiles 、配列にアクセスする前に、名前の配列全体が返されるまで待機する必要があります。When you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. そのため、多くのファイルとディレクトリを操作する場合は、の方 EnumerateFiles が効率的です。Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

返されたコレクションはキャッシュされません。コレクションでを呼び出すたびに、 GetEnumerator 新しい列挙が開始されます。The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

適用対象

EnumerateFiles(String, String, SearchOption)

指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。オプションでサブディレクトリを検索対象にできます。Returns an enumerable collection of full file names that match a search pattern in a specified path, and optionally searches subdirectories.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of String)

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。The relative or absolute path to the directory to search. この文字列の大文字と小文字は区別されません。This string is not case-sensitive.

searchPattern
String

path 内のファイル名と対応させる検索文字列。The search string to match against the names of files in path. このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

searchOption
SearchOption

検索操作に現在のディレクトリのみを含めるのか、またはすべてのサブディレクトリを含めるのかを指定する列挙値の 1 つ。One of the enumeration values that specifies whether the search operation should include only the current directory or should include all subdirectories. 既定値は TopDirectoryOnly です。The default value is TopDirectoryOnly.

戻り値

IEnumerable<String>

path で指定したディレクトリ内にあり、指定した検索パターンおよび検索オプションと一致する、ファイルの完全名 (パスを含む) の列挙可能なコレクション。An enumerable collection of the full names (including paths) for the files in the directory specified by path and that match the specified search pattern and search option.

例外

path は長さゼロの文字列で、空白のみで構成されているか、または無効な文字が使用されています。path is a zero-length string, contains only white space, or contains invalid characters. 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars() method.

- または --or- searchPattern には有効なパターンが含まれません。searchPattern does not contain a valid pattern.

pathnullです。path is null.

または-or- searchPatternnullです。searchPattern is null.

searchOption は正しい SearchOption 値ではありません。searchOption is not a valid SearchOption value.

たとえば、マップされていないドライブへの参照など、path は無効です。path is invalid, such as referring to an unmapped drive.

path はファイル名です。path is a file name.

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。The specified path, file name, or combined exceed the system-defined maximum length.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次の例では、ディレクトリとそのサブディレクトリにあるすべてのテキストファイルを取得し、それらを新しいディレクトリに移動する方法を示します。The following example shows how to retrieve all the text files in a directory and its subdirectories, and move them to a new directory. ファイルが移動されると、元のディレクトリには存在しなくなります。After the files are moved, they no longer exist in the original directories.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

次の例では、拡張子が .txt のすべてのファイルを再帰的に列挙し、ファイルの各行を読み取り、その行に "Microsoft" という文字列が含まれている場合はその行を表示します。The following example recursively enumerates all files that have a .txt extension, reads each line of the file, and displays the line if it contains the string "Microsoft".

using System;
using System.IO;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // Set a variable to the My Documents path.
            string docPath =
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

            var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        from line in File.ReadLines(file)
                        where line.Contains("Microsoft")
                        select new
                        {
                            File = file,
                            Line = line
                        };

            foreach (var f in files)
            {
                Console.WriteLine($"{f.File}\t{f.Line}");
            }
            Console.WriteLine($"{files.Count().ToString()} files found.");
        }
        catch (UnauthorizedAccessException uAEx)
        {
            Console.WriteLine(uAEx.Message);
        }
        catch (PathTooLongException pathEx)
        {
            Console.WriteLine(pathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Xml.Linq

Module Module1

    Sub Main()
        Try
            Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
            Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
                        From line In File.ReadLines(chkFile)
                        Where line.Contains("Microsoft")
                        Select New With {.curFile = chkFile, .curLine = line}

            For Each f In files
                Console.WriteLine($"{f.File}\t{f.Line}")
            Next
            Console.WriteLine($"{files.Count} files found.")
        Catch uAEx As UnauthorizedAccessException
            Console.WriteLine(uAEx.Message)
        Catch pathEx As PathTooLongException
            Console.WriteLine(pathEx.Message)
        End Try
    End Sub
End Module

注釈

searchPattern には、リテラル文字とワイルドカード文字の組み合わせを使用できますが、正規表現はサポートされていません。searchPattern can be a combination of literal and wildcard characters, but it doesn't support regular expressions. では、次のワイルドカード指定子を使用でき searchPattern ます。The following wildcard specifiers are permitted in searchPattern.

ワイルドカード指定子Wildcard specifier [一致する]Matches
* アスタリスク* (asterisk) その位置に0個以上の文字が含まれています。Zero or more characters in that position.
?? (疑問符)(question mark) その位置に0個または1個の文字。Zero or one character in that position.

ワイルドカード以外の文字はリテラル文字です。Characters other than the wildcard are literal characters. たとえば、 searchPattern 文字列 " * t" は、 path 末尾に文字 "t" が付いているすべての名前を検索します。For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". searchPattern文字列 "s" は、 * path 文字 "s" で始まるすべての名前を検索します。The searchPattern string "s*" searches for all names in path beginning with the letter "s".

注意

.NET Framework のみ: でアスタリスクのワイルドカード文字を使用 searchPattern し、".txt" などの3文字のファイル拡張子を指定すると * 、このメソッドは、指定された拡張子で 始まる 拡張子を持つファイルも返します。.NET Framework only: When you use the asterisk wildcard character in searchPattern and you specify a three-character file extension, for example, "*.txt", this method also returns files with extensions that begin with the specified extension. たとえば、検索パターン ".xls" では、 * "book.xls" と "book.xlsx" の両方が返されます。For example, the search pattern "*.xls" returns both "book.xls" and "book.xlsx". この動作は、検索パターンでアスタリスクが使用されていて、指定されたファイル拡張子が正確に3文字の場合にのみ発生します。This behavior only occurs if an asterisk is used in the search pattern and the file extension provided is exactly three characters. アスタリスクの代わりに疑問符のワイルドカード文字を使用すると、このメソッドは、指定されたファイル拡張子に一致するファイルだけを返します。If you use the question mark wildcard character instead of the asterisk, this method returns only files that match the specified file extension exactly. 次の表は、.NET Framework での異常を示しています。The following table depicts this anomaly in .NET Framework.

ディレクトリ内のファイルFiles in directory 検索パターンSearch pattern .NET 5 以降の戻り値.NET 5+ returns .NET Framework の戻り値.NET Framework returns
file.ai、ファイル. aiffile.ai, file.aif * ai*.ai file.aifile.ai file.aifile.ai
book.xls、book.xlsxbook.xls, book.xlsx * .xls*.xls book.xlsbook.xls book.xls、book.xlsxbook.xls, book.xlsx
file.ai、ファイル. aiffile.ai, file.aif ?.ai?.ai file.aifile.ai file.aifile.ai
book.xls、book.xlsxbook.xls, book.xlsx ?.xls?.xls book.xlsbook.xls book.xlsbook.xls

searchPattern 2つのピリオド ("..") で終了することはできません。また、2つのピリオド ("..") に続けて DirectorySeparatorChar または AltDirectorySeparatorChar を指定することも、無効な文字を含めることもできません。searchPattern cannot end in two periods ("..") or contain two periods ("..") followed by DirectorySeparatorChar or AltDirectorySeparatorChar, nor can it contain any invalid characters. 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars method.

相対パス情報は、パラメーターを使用して指定でき path ます。You can specify relative path information with the path parameter. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。これは、メソッドを使用して判断でき GetCurrentDirectory ます。Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method.

EnumerateFilesメソッドとメソッドは次のように GetFiles 異なります。を使用すると EnumerateFiles 、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned. を使用する場合は GetFiles 、配列にアクセスする前に、名前の配列全体が返されるまで待機する必要があります。When you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. そのため、多くのファイルとディレクトリを操作する場合は、の方 EnumerateFiles が効率的です。Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

返されたコレクションはキャッシュされません。コレクションでを呼び出すたびに、 GetEnumerator 新しい列挙が開始されます。The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

適用対象

EnumerateFiles(String)

指定されたパスに存在するファイルの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of full file names in a specified path.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (path As String) As IEnumerable(Of String)

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。The relative or absolute path to the directory to search. この文字列の大文字と小文字は区別されません。This string is not case-sensitive.

戻り値

IEnumerable<String>

path で指定したディレクトリ内にあるファイルの完全名 (パスを含む) から成る列挙可能なコレクション。An enumerable collection of the full names (including paths) for the files in the directory specified by path.

例外

path は長さゼロの文字列で、空白のみで構成されているか、または無効な文字が使用されています。path is a zero-length string, contains only white space, or contains invalid characters. 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars() method.

pathnullです。path is null.

たとえば、マップされていないドライブへの参照など、path は無効です。path is invalid, such as referring to an unmapped drive.

path はファイル名です。path is a file name.

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。The specified path, file name, or combined exceed the system-defined maximum length.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次の例は、ディレクトリ内のすべてのファイルを取得し、それらを新しいディレクトリに移動する方法を示しています。The following example shows how to retrieve all the files in a directory and move them to a new directory. ファイルが移動されると、元のディレクトリには存在しなくなります。After the files are moved, they no longer exist in the original directory.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory);

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try

    End Sub

End Module

次の例では、指定されたディレクトリ内のファイルを列挙し、ファイルの各行を読み取り、文字列 "ヨーロッパ" が含まれている場合はその行を表示します。The following example enumerates the files in the specified directory, reads each line of the file, and displays the line if it contains the string "Europe".

using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all files containing the word 'Europe'.
            var files = from file in
                Directory.EnumerateFiles(@"\\archives1\library\")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            ' LINQ query for all files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

注釈

相対パス情報は、パラメーターを使用して指定でき path ます。You can specify relative path information with the path parameter. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。これは、メソッドを使用して判断でき GetCurrentDirectory ます。Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method.

EnumerateFilesメソッドとメソッドは次のように GetFiles 異なります。を使用すると EnumerateFiles 、コレクション全体が返される前に、名前のコレクションの列挙を開始できます。The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned. を使用する場合は GetFiles 、配列にアクセスする前に、名前の配列全体が返されるまで待機する必要があります。When you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. そのため、多くのファイルとディレクトリを操作する場合は、の方 EnumerateFiles が効率的です。Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

返されたコレクションはキャッシュされません。コレクションでを呼び出すたびに、 GetEnumerator 新しい列挙が開始されます。The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

適用対象

EnumerateFiles(String, String)

指定されたパスから、検索パターンに一致するファイルの完全名から成る、列挙可能なコレクションを返します。Returns an enumerable collection of full file names that match a search pattern in a specified path.

public:
 static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String) As IEnumerable(Of String)

パラメーター

path
String

検索するディレクトリの相対パスまたは絶対パス。The relative or absolute path to the directory to search. この文字列の大文字と小文字は区別されません。This string is not case-sensitive.

searchPattern
String

path 内のファイル名と対応させる検索文字列。The search string to match against the names of files in path. このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。This parameter can contain a combination of valid literal path and wildcard (* and ?) characters, but it doesn't support regular expressions.

戻り値

IEnumerable<String>

指定した検索パターンに一致し、path で指定したディレクトリの中にあるファイルの完全名 (パスを含む) から成る列挙可能なコレクション。An enumerable collection of the full names (including paths) for the files in the directory specified by path and that match the specified search pattern.

例外

path は長さゼロの文字列で、空白のみで構成されているか、または無効な文字が使用されています。path is a zero-length string, contains only white space, or contains invalid characters. 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars() method.

- または --or- searchPattern には有効なパターンが含まれません。searchPattern does not contain a valid pattern.

pathnullです。path is null.

または-or- searchPatternnullです。searchPattern is null.

たとえば、マップされていないドライブへの参照など、path は無効です。path is invalid, such as referring to an unmapped drive.

path はファイル名です。path is a file name.

指定されたパス、ファイル名、または結合は、システム定義の最大長を超えています。The specified path, file name, or combined exceed the system-defined maximum length.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

呼び出し元に、必要なアクセス許可がありません。The caller does not have the required permission.

次の例は、ディレクトリ内のすべてのテキストファイルを取得し、それらを新しいディレクトリに移動する方法を示しています。The following example shows how to retrieve all the text files in a directory and move them to a new directory. ファイルが移動されると、元のディレクトリには存在しなくなります。After the files are moved, they no longer exist in the original directory.

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceDirectory = @"C:\current";
            string archiveDirectory = @"C:\archive";

            try
            {
                var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");

                foreach (string currentFile in txtFiles)
                {
                    string fileName = currentFile.Substring(sourceDirectory.Length + 1);
                    Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
    }
}
Imports System.IO

Module Module1

    Sub Main()
        Dim sourceDirectory As String = "C:\current"
        Dim archiveDirectory As String = "C:\archive"

        Try
            Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")

            For Each currentFile As String In txtFiles
                Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
                Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
            Next
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub

End Module

次の例では、指定したディレクトリ内にある、拡張子が .txt のファイルを列挙し、ファイルの各行を読み取り、文字列 "ヨーロッパ" が含まれている場合はその行を表示します。The following example enumerates the files in the specified directory that have a ".txt" extension, reads each line of the file, and displays the line if it contains the string "Europe".

using System;
using System.Linq;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            // LINQ query for all .txt files containing the word 'Europe'.
            var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
                where file.ToLower().Contains("europe")
                select file;

            foreach (var file in files)
            {
                Console.WriteLine("{0}", file);
            }
            Console.WriteLine("{0} files found.", files.Count<string>().ToString());
        }
            
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}
Imports System.IO
Imports System.Linq

Module Module1

    Sub Main()
        Try
            ' LINQ query for all .txt files containing the word 'Europe'.
            Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
                Where file.ToLower().Contains("europe")

            For Each file In files
                Console.WriteLine("{0}", file)
            Next
            Console.WriteLine("{0} files found.", files.Count.ToString())
        Catch UAEx As UnauthorizedAccessException
            Console.WriteLine(UAEx.Message)
        Catch PathEx As PathTooLongException
            Console.WriteLine(PathEx.Message)
        End Try
    End Sub

End Module

注釈

searchPattern には、リテラル文字とワイルドカード文字の組み合わせを使用できますが、正規表現はサポートされていません。searchPattern can be a combination of literal and wildcard characters, but it doesn't support regular expressions. では、次のワイルドカード指定子を使用でき searchPattern ます。The following wildcard specifiers are permitted in searchPattern.

ワイルドカード指定子Wildcard specifier [一致する]Matches
* アスタリスク* (asterisk) その位置に0個以上の文字が含まれています。Zero or more characters in that position.
?? (疑問符)(question mark) その位置に0個または1個の文字。Zero or one character in that position.

ワイルドカード以外の文字はリテラル文字です。Characters other than the wildcard are literal characters. たとえば、 searchPattern 文字列 " * t" は、 path 末尾に文字 "t" が付いているすべての名前を検索します。For example, the searchPattern string "*t" searches for all names in path ending with the letter "t". searchPattern文字列 "s" は、 * path 文字 "s" で始まるすべての名前を検索します。The searchPattern string "s*" searches for all names in path beginning with the letter "s".

注意

.NET Framework のみ: でアスタリスクのワイルドカード文字を使用 searchPattern し、".txt" などの3文字のファイル拡張子を指定すると * 、このメソッドは、指定された拡張子で 始まる 拡張子を持つファイルも返します。.NET Framework only: When you use the asterisk wildcard character in searchPattern and you specify a three-character file extension, for example, "*.txt", this method also returns files with extensions that begin with the specified extension. たとえば、検索パターン ".xls" では、 * "book.xls" と "book.xlsx" の両方が返されます。For example, the search pattern "*.xls" returns both "book.xls" and "book.xlsx". この動作は、検索パターンでアスタリスクが使用されていて、指定されたファイル拡張子が正確に3文字の場合にのみ発生します。This behavior only occurs if an asterisk is used in the search pattern and the file extension provided is exactly three characters. アスタリスクの代わりに疑問符のワイルドカード文字を使用すると、このメソッドは、指定されたファイル拡張子に一致するファイルだけを返します。If you use the question mark wildcard character instead of the asterisk, this method returns only files that match the specified file extension exactly. 次の表は、.NET Framework での異常を示しています。The following table depicts this anomaly in .NET Framework.

ディレクトリ内のファイルFiles in directory 検索パターンSearch pattern .NET 5 以降の戻り値.NET 5+ returns .NET Framework の戻り値.NET Framework returns
file.ai、ファイル. aiffile.ai, file.aif * ai*.ai file.aifile.ai file.aifile.ai
book.xls、book.xlsxbook.xls, book.xlsx * .xls*.xls book.xlsbook.xls book.xls、book.xlsxbook.xls, book.xlsx
file.ai、ファイル. aiffile.ai, file.aif ?.ai?.ai file.aifile.ai file.aifile.ai
book.xls、book.xlsxbook.xls, book.xlsx ?.xls?.xls book.xlsbook.xls book.xlsbook.xls

searchPattern 2つのピリオド ("..") で終了することはできません。また、2つのピリオド ("..") に続けて DirectorySeparatorChar または AltDirectorySeparatorChar を指定することも、無効な文字を含めることもできません。searchPattern cannot end in two periods ("..") or contain two periods ("..") followed by DirectorySeparatorChar or AltDirectorySeparatorChar, nor can it contain any invalid characters. 正しくない文字を照会するには、GetInvalidPathChars メソッドを使用します。You can query for invalid characters by using the GetInvalidPathChars method.

相対パス情報は、パラメーターを使用して指定でき path ます。You can specify relative path information with the path parameter. 相対パス情報は、現在の作業ディレクトリを基準として解釈されます。これは、メソッドを使用して判断でき GetCurrentDirectory ます。Relative path information is interpreted as relative to the current working directory, which you can determine by using the GetCurrentDirectory method.

EnumerateFilesメソッドとメソッドは次のように GetFiles 異なります。を使用すると、 EnumerateFiles コレクション全体が返される前に、名前のコレクションの列挙を開始できます。を使用する場合は GetFiles 、配列にアクセスする前に、名前の配列全体が返されるまで待機する必要があります。The EnumerateFiles and GetFiles methods differ as follows: When you use EnumerateFiles, you can start enumerating the collection of names before the whole collection is returned; when you use GetFiles, you must wait for the whole array of names to be returned before you can access the array. そのため、多くのファイルとディレクトリを操作する場合は、の方 EnumerateFiles が効率的です。Therefore, when you are working with many files and directories, EnumerateFiles can be more efficient.

返されたコレクションはキャッシュされません。コレクションでを呼び出すたびに、 GetEnumerator 新しい列挙が開始されます。The returned collection is not cached; each call to the GetEnumerator on the collection will start a new enumeration.

適用対象