DirectoryInfo.EnumerateFiles メソッド

定義

現在のディレクトリに存在するファイル情報の列挙可能なコレクションを返します。

オーバーロード

EnumerateFiles()

現在のディレクトリに存在するファイル情報の列挙可能なコレクションを返します。

EnumerateFiles(String)

検索パターンに一致する列挙可能なファイル情報のコレクションを返します。

EnumerateFiles(String, EnumerationOptions)

指定された検索パターンと列挙オプションに一致するファイル情報の列挙可能なコレクションを返します。

EnumerateFiles(String, SearchOption)

指定された検索パターンと、サブディレクトリを検索するかどうかを指定するオプションの設定に一致する列挙可能なファイル情報のコレクションを返します。

EnumerateFiles()

現在のディレクトリに存在するファイル情報の列挙可能なコレクションを返します。

public:
 System::Collections::Generic::IEnumerable<System::IO::FileInfo ^> ^ EnumerateFiles();
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles ();
member this.EnumerateFiles : unit -> seq<System.IO.FileInfo>
Public Function EnumerateFiles () As IEnumerable(Of FileInfo)

戻り値

IEnumerable<FileInfo>

現在のディレクトリ内の列挙可能なファイルのコレクション。

例外

DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

次の例では、指定されたディレクトリにあるファイルを列挙し、LINQ クエリを使用して、プロパティの値を確認することで、2009より前に作成されたすべてのファイルの名前を返し CreationTimeUtc ます。

ファイル名のみが必要な場合は、静的クラスを使用して Directory パフォーマンスを向上させます。 例については、メソッドを参照してください Directory.EnumerateFiles(String)

// Create a DirectoryInfo of the directory of the files to enumerate.
DirectoryInfo DirInfo = new DirectoryInfo(@"\\archives1\library\");

DateTime StartOf2009 = new DateTime(2009, 01, 01);

// LINQ query for all files created before 2009.
var files = from f in DirInfo.EnumerateFiles()
           where f.CreationTimeUtc < StartOf2009
           select f;

// Show results.
foreach (var f in files)
{
    Console.WriteLine("{0}", f.Name);
}
' Create a DirectoryInfo of the directory of the files to enumerate.
Dim DirInfo As New DirectoryInfo("\\archives1\library\")

Dim StartOf2009 As New DateTime(2009, 1, 1)

' LINQ query for all files created before 2009.
Dim files = From f In DirInfo.EnumerateFiles()
            Where f.CreationTimeUtc < StartOf2009

' Show results.
For Each f As FileInfo In files
    Console.WriteLine("{0}", f.Name)
Next

次の例では、別の検索オプションを使用してディレクトリ内のファイルを列挙する方法を示します。 この例では、log1.txt、log2.txt、test1.txt、test2.txt、test3.txt、および SubFile.txt という名前のファイルを持つサブディレクトリという名前のファイルがあるディレクトリを前提としています。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.EnumerateFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.EnumerateFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.EnumerateFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/
Imports System.IO

Module Module1

    Sub Main()
        Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
        Console.WriteLine("No search pattern returns:")
        For Each fi In di.EnumerateFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.EnumerateFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.EnumerateFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
            Console.WriteLine(fi.Name)
        Next
    End Sub

End Module

' This code produces output similar to the following:

' No search pattern returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt

' Search pattern *2* returns:
' log2.txt
' test2.txt

' Search pattern test?.txt returns:
' test1.txt
' test2.txt
' test3.txt

' Search pattern AllDirectories returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt
' SubFile.txt
' Press any key to continue . . .

注釈

EnumerateFilesメソッドとメソッドは次のように GetFiles 異なります。

  • を使用すると EnumerateFilesFileInfo コレクション全体が返される前に、オブジェクトのコレクションの列挙を開始できます。

  • を使用するときは GetFiles 、配列にアクセスする前に、オブジェクトの配列全体が返されるまで待つ必要があり FileInfo ます。

そのため、多くのファイルとディレクトリを操作する場合は、の方 EnumerateFiles が効率的です。

このメソッドは、次のプロパティの値を事前に設定し FileInfo ます。

返されたコレクションはキャッシュされません。コレクションのメソッドを呼び出すたびに、 GetEnumerator 新しい列挙が開始されます。

適用対象

EnumerateFiles(String)

検索パターンに一致する列挙可能なファイル情報のコレクションを返します。

public:
 System::Collections::Generic::IEnumerable<System::IO::FileInfo ^> ^ EnumerateFiles(System::String ^ searchPattern);
public System.Collections.Generic.IEnumerable<System.IO.FileInfo> EnumerateFiles (string searchPattern);
member this.EnumerateFiles : string -> seq<System.IO.FileInfo>
Public Function EnumerateFiles (searchPattern As String) As IEnumerable(Of FileInfo)

パラメーター

searchPattern
String

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

戻り値

IEnumerable<FileInfo>

searchPattern に一致する列挙可能なファイルのコレクション。

例外

searchPatternnullです。

DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

次の例では、別の検索オプションを使用してディレクトリ内のファイルを列挙する方法を示します。 この例では、log1.txt、log2.txt、test1.txt、test2.txt、test3.txt、および SubFile.txt という名前のファイルを持つサブディレクトリという名前のファイルがあるディレクトリを前提としています。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.EnumerateFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.EnumerateFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.EnumerateFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/
Imports System.IO

Module Module1

    Sub Main()
        Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
        Console.WriteLine("No search pattern returns:")
        For Each fi In di.EnumerateFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.EnumerateFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.EnumerateFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
            Console.WriteLine(fi.Name)
        Next
    End Sub

End Module

' This code produces output similar to the following:

' No search pattern returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt

' Search pattern *2* returns:
' log2.txt
' test2.txt

' Search pattern test?.txt returns:
' test1.txt
' test2.txt
' test3.txt

' Search pattern AllDirectories returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt
' SubFile.txt
' Press any key to continue . . .

注釈

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

ワイルドカード指定子 [一致する]
* アスタリスク その位置に0個以上の文字が含まれています。
? (疑問符) その位置に0個または1個の文字。

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

EnumerateFilesメソッドとメソッドは次のように GetFiles 異なります。

  • を使用すると EnumerateFilesFileInfo コレクション全体が返される前に、オブジェクトのコレクションの列挙を開始できます。

  • を使用するときは GetFiles 、配列にアクセスする前に、オブジェクトの配列全体が返されるまで待つ必要があり FileInfo ます。

そのため、多くのファイルとディレクトリを操作する場合は、の方 EnumerateFiles が効率的です。

このメソッドは、次のプロパティの値を事前に設定し FileInfo ます。

返されたコレクションはキャッシュされません。コレクションのメソッドを呼び出すたびに、 GetEnumerator 新しい列挙が開始されます。

適用対象

EnumerateFiles(String, EnumerationOptions)

指定された検索パターンと列挙オプションに一致するファイル情報の列挙可能なコレクションを返します。

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

パラメーター

searchPattern
String

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

enumerationOptions
EnumerationOptions

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

戻り値

IEnumerable<FileInfo>

searchPatternenumerationOptions に一致する列挙可能なファイルのコレクション。

例外

searchPatternnullです。

DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

注釈

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

ワイルドカード指定子 [一致する]
* アスタリスク その位置に0個以上の文字が含まれています。
? (疑問符) その位置に0個または1個の文字。

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

EnumerateFilesメソッドとメソッドは次のように GetFiles 異なります。

  • を使用すると EnumerateFilesFileInfo コレクション全体が返される前に、オブジェクトのコレクションの列挙を開始できます。

  • を使用するときは GetFiles 、配列にアクセスする前に、オブジェクトの配列全体が返されるまで待つ必要があり FileInfo ます。

そのため、多くのファイルとディレクトリを操作する場合は、の方 EnumerateFiles が効率的です。

このメソッドは、次のプロパティの値を事前に設定し FileInfo ます。

返されたコレクションはキャッシュされません。コレクションのメソッドを呼び出すたびに、 GetEnumerator 新しい列挙が開始されます。

適用対象

EnumerateFiles(String, SearchOption)

指定された検索パターンと、サブディレクトリを検索するかどうかを指定するオプションの設定に一致する列挙可能なファイル情報のコレクションを返します。

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

パラメーター

searchPattern
String

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

searchOption
SearchOption

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

戻り値

IEnumerable<FileInfo>

searchPatternsearchOption に一致する列挙可能なファイルのコレクション。

例外

searchPatternnullです。

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

DirectoryInfo オブジェクト内のカプセル化されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

次の例では、別の検索オプションを使用してディレクトリ内のファイルを列挙する方法を示します。 この例では、log1.txt、log2.txt、test1.txt、test2.txt、test3.txt、および SubFile.txt という名前のファイルを持つサブディレクトリという名前のファイルがあるディレクトリを前提としています。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.EnumerateFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.EnumerateFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.EnumerateFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.EnumerateFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/
Imports System.IO

Module Module1

    Sub Main()
        Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
        Console.WriteLine("No search pattern returns:")
        For Each fi In di.EnumerateFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.EnumerateFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.EnumerateFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.EnumerateFiles("*", SearchOption.AllDirectories)
            Console.WriteLine(fi.Name)
        Next
    End Sub

End Module

' This code produces output similar to the following:

' No search pattern returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt

' Search pattern *2* returns:
' log2.txt
' test2.txt

' Search pattern test?.txt returns:
' test1.txt
' test2.txt
' test3.txt

' Search pattern AllDirectories returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt
' SubFile.txt
' Press any key to continue . . .

注釈

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

ワイルドカード指定子 [一致する]
* アスタリスク その位置に0個以上の文字が含まれています。
? (疑問符) その位置に0個または1個の文字。

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

EnumerateFilesメソッドとメソッドは次のように GetFiles 異なります。

  • を使用すると EnumerateFilesFileInfo コレクション全体が返される前に、オブジェクトのコレクションの列挙を開始できます。

  • を使用するときは GetFiles 、配列にアクセスする前に、オブジェクトの配列全体が返されるまで待つ必要があり FileInfo ます。

そのため、多くのファイルとディレクトリを操作する場合は、の方 EnumerateFiles が効率的です。

このメソッドは、次のプロパティの値を事前に設定し FileInfo ます。

返されたコレクションはキャッシュされません。コレクションのメソッドを呼び出すたびに、 GetEnumerator 新しい列挙が開始されます。

適用対象