DirectoryInfo.GetFiles メソッド

定義

現在のディレクトリからファイル一覧を返します。

オーバーロード

GetFiles(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致する現在のディレクトリからファイル一覧を返します。

GetFiles(String, SearchOption)

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

GetFiles()

現在のディレクトリからファイル一覧を返します。

GetFiles(String)

現在のディレクトリから、指定した検索パターンに一致するファイル一覧を返します。

GetFiles(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致する現在のディレクトリからファイル一覧を返します。

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);
member this.GetFiles : string * System.IO.EnumerationOptions -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String, enumerationOptions As EnumerationOptions) As FileInfo()

パラメーター

searchPattern
String

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

enumerationOptions
EnumerationOptions

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

戻り値

FileInfo[]

searchPatternenumerationOptions に一致する、厳密に型指定された FileInfo オブジェクトの配列。

例外

2.1 より前の .NET Framework および .net Core バージョン: searchPattern メソッドで定義されている1つ以上の無効な文字が含まれています GetInvalidPathChars()

searchPatternnullです。

パスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

注釈

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

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

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

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

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

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

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

にファイルが存在しない場合 DirectoryInfo 、このメソッドは空の配列を返します。

パラメーターでは、次のワイルドカード指定子を使用でき searchPattern ます。

ワイルドカード文字 説明
* 0個以上の文字。
? 0個または1個の文字。

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

ワイルドカードを使用できます。 たとえば、" searchPattern * .txt" という文字列は、拡張子が "txt" のすべてのファイル名を検索します。 searchPattern文字列 "s" は、 * 文字 "s" で始まるすべてのファイル名を検索します。 ファイルが存在しない場合、または内の文字列に一致するファイルがない場合 searchPattern DirectoryInfo 、このメソッドは空の配列を返します。

注意

でアスタリスクのワイルドカード文字 searchPattern ("* .txt" など) を使用する場合、一致の動作は、指定されたファイル拡張子の長さによって異なります。 searchPatternファイル拡張子が3文字のファイルは、3文字以上の拡張子を持つファイルを返します。最初の3文字は、で指定したファイル拡張子と一致し searchPattern ます。 searchPatternファイル拡張子が1、2、または3文字を超える場合は、で指定されたファイル拡張子に一致する長さの拡張子を持つファイルのみが返さ searchPattern れます。 疑問符のワイルドカード文字を使用する場合、このメソッドは、指定されたファイル拡張子に一致するファイルだけを返します。 たとえば、ディレクトリに2つのファイル ("file1.txt" と "その他の file1.txt") がある場合、"file? .txt" という検索パターンでは最初のファイルのみが返され、"file.txt" の検索パターンでは両方のファイルが返され * ます。

注意

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

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

適用対象

GetFiles(String, SearchOption)

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

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern, System::IO::SearchOption searchOption);
public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.SearchOption searchOption);
member this.GetFiles : string * System.IO.SearchOption -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String, searchOption As SearchOption) As FileInfo()

パラメーター

searchPattern
String

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

searchOption
SearchOption

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

戻り値

FileInfo[]

FileInfo 型の配列。

例外

2.1 より前の .NET Framework および .net Core バージョン: searchPattern メソッドで定義されている1つ以上の無効な文字が含まれています GetInvalidPathChars()

searchPatternnullです。

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

パスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

次の例では、さまざまな検索オプションを使用してディレクトリからファイルの一覧を取得する方法を示します。 この例では、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:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

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

            Console.WriteLine();

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

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", 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.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

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

        Console.WriteLine()

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

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", 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 が効率的です。

にファイルが存在しない場合 DirectoryInfo 、このメソッドは空の配列を返します。

では、次のワイルドカード指定子を使用でき searchPattern ます。

ワイルドカード文字 説明
* アスタリスク 0個以上の文字。
? (疑問符) 0個または1個の文字。

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

ワイルドカードを使用できます。 たとえば、" searchPattern * .txt" という文字列は、拡張子が "txt" のすべてのファイル名を検索します。 searchPattern文字列 "s" は、 * 文字 "s" で始まるすべてのファイル名を検索します。 ファイルが存在しない場合、または内の文字列に一致するファイルがない場合 searchPattern DirectoryInfo 、このメソッドは空の配列を返します。

注意

でアスタリスクのワイルドカード文字 searchPattern ("* .txt" など) を使用する場合、一致の動作は、指定されたファイル拡張子の長さによって異なります。 searchPatternファイル拡張子が3文字のファイルは、3文字以上の拡張子を持つファイルを返します。最初の3文字は、で指定したファイル拡張子と一致し searchPattern ます。 searchPatternファイル拡張子が1、2、または3文字を超える場合は、で指定されたファイル拡張子に一致する長さの拡張子を持つファイルのみが返さ searchPattern れます。 疑問符のワイルドカード文字を使用する場合、このメソッドは、指定されたファイル拡張子に一致するファイルだけを返します。 たとえば、ディレクトリに2つのファイル ("file1.txt" と "その他の file1.txt") がある場合、"file? .txt" という検索パターンでは最初のファイルのみが返され、"file.txt" の検索パターンでは両方のファイルが返され * ます。

次の一覧は、パラメーターのさまざまな長さの動作を示してい searchPattern ます。

  • "* abc" は、拡張子が abc、abcd、abcde...z、abcdef などのファイルを返します。

  • "* abcd" は、拡張子が abcd のファイルのみを返します。

  • "* abcde...z" は拡張子が abcde...z のファイルのみを返します。

  • "* abcdef" は拡張子が abcdef のファイルのみを返します。

注意

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

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

  1. Attributes

  2. CreationTime

  3. CreationTimeUtc

  4. LastAccessTime

  5. LastAccessTimeUtc

  6. LastWriteTime

  7. LastWriteTimeUtc

  8. Length

こちらもご覧ください

適用対象

GetFiles()

現在のディレクトリからファイル一覧を返します。

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles();
public System.IO.FileInfo[] GetFiles ();
member this.GetFiles : unit -> System.IO.FileInfo[]
Public Function GetFiles () As FileInfo()

戻り値

FileInfo[]

FileInfo 型の配列。

例外

マップされていないドライブにあるなど、パスが正しくありません。

次の例は、さまざまな検索オプションを使用してディレクトリからファイルの一覧を取得する方法を示しています。 この例では、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:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

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

            Console.WriteLine();

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

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", 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.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

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

        Console.WriteLine()

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

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", 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 . . .

注釈

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

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

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

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

にファイルがない場合、この DirectoryInfo メソッドは空の配列を返します。

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

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

こちらもご覧ください

適用対象

GetFiles(String)

現在のディレクトリから、指定した検索パターンに一致するファイル一覧を返します。

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern);
public System.IO.FileInfo[] GetFiles (string searchPattern);
member this.GetFiles : string -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String) As FileInfo()

パラメーター

searchPattern
String

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

戻り値

FileInfo[]

FileInfo 型の配列。

例外

2.1 より前の .NET Framework および .net Core バージョン: searchPattern メソッドで定義されている1つ以上の無効な文字が含まれています GetInvalidPathChars()

searchPatternnullです。

パスが正しくありません (たとえば、マップされていないドライブにあるなど)。

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

次の例では、さまざまな検索オプションを使用してディレクトリからファイルの一覧を取得する方法を示します。 この例では、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:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

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

            Console.WriteLine();

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

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", 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.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

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

        Console.WriteLine()

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

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", 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" で始まるすべての名前を検索します。

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

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

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

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

にファイルがない場合、この DirectoryInfo メソッドは空の配列を返します。

次のワイルドカード指定子は、 パラメーターで使用 searchPattern できます。

ワイルドカード文字 説明
* 0 個以上の文字。
? 正確に 0 文字または 1 文字。

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

ワイルドカードを使用できます。 たとえば、文字列 "*.txt" は、拡張子が searchPattern "txt" のすべてのファイル名を検索します。 searchPattern文字列 "s" は、 * 文字 "s" で始まるすべてのファイル名を検索します。 ファイルが存在しない場合、または内の文字列に一致するファイルがない場合 searchPattern DirectoryInfo 、このメソッドは空の配列を返します。

注意

でアスタリスクのワイルドカード文字 searchPattern ("* .txt" など) を使用する場合、一致の動作は、指定されたファイル拡張子の長さによって異なります。 searchPatternファイル拡張子が3文字のファイルは、3文字以上の拡張子を持つファイルを返します。最初の3文字は、で指定したファイル拡張子と一致し searchPattern ます。 searchPatternファイル拡張子が1、2、または3文字を超える場合は、で指定されたファイル拡張子に一致する長さの拡張子を持つファイルのみが返さ searchPattern れます。 疑問符のワイルドカード文字を使用する場合、このメソッドは、指定されたファイル拡張子に一致するファイルだけを返します。 たとえば、ディレクトリに2つのファイル ("file1.txt" と "その他の file1.txt") がある場合、"file? .txt" という検索パターンでは最初のファイルのみが返され、"file.txt" の検索パターンでは両方のファイルが返され * ます。

注意

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

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

こちらもご覧ください

適用対象