Directory.GetFiles メソッド

定義

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

オーバーロード

名前 説明
GetFiles(String)

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

GetFiles(String, String)

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

GetFiles(String, String, EnumerationOptions)

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

GetFiles(String, String, SearchOption)

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

GetFiles(String)

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

public:
 static cli::array <System::String ^> ^ GetFiles(System::String ^ path);
public static string[] GetFiles(string path);
static member GetFiles : string -> string[]
Public Shared Function GetFiles (path As String) As String()

パラメーター

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);	
    }
}
module RecursiveFileProcessor

open System.IO

// Insert logic for processing found files here.
let processFile path =
    printfn $"Processed file '%s{path}'."

// Process all files in the directory passed in, recurse on any directories
// that are found, and process the files they contain.
let rec processDirectory targetDirectory =
    // Process the list of files found in the directory.
    let fileEntries = Directory.GetFiles targetDirectory
    for fileName in fileEntries do
        processFile fileName

    // Recurse into subdirectories of this directory.
    let subdirectoryEntries = Directory.GetDirectories targetDirectory
    for subdirectory in subdirectoryEntries do
        processDirectory subdirectory

[<EntryPoint>]
let main args =
    for path in args do
        if File.Exists path then
            // This path is a file
            processFile path
        elif Directory.Exists path then
            // This path is a directory
            processDirectory path
        else
            printfn $"{path} is not a valid file or directory."
    0
' For Directory.GetFiles and Directory.GetDirectories
' For File.Exists, Directory.Exists 

Imports System.IO
Imports System.Collections

Public Class RecursiveFileProcessor

    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim path As String
        For Each path In args
            If File.Exists(path) Then
                ' This path is a file.
                ProcessFile(path)
            Else
                If Directory.Exists(path) Then
                    ' This path is a directory.
                    ProcessDirectory(path)
                Else
                    Console.WriteLine("{0} is not a valid file or directory.", path)
                End If
            End If
        Next path
    End Sub


    ' Process all files in the directory passed in, recurse on any directories 
    ' that are found, and process the files they contain.
    Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
        ' Process the list of files found in the directory.
        Dim fileName As String
        For Each fileName In fileEntries
            ProcessFile(fileName)

        Next fileName
        Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
        ' Recurse into subdirectories of this directory.
        Dim subdirectory As String
        For Each subdirectory In subdirectoryEntries
            ProcessDirectory(subdirectory)
        Next subdirectory

    End Sub

    ' Insert logic for processing found files here.
    Public Shared Sub ProcessFile(ByVal path As String)
        Console.WriteLine("Processed file '{0}'.", path)
    End Sub
End Class

注釈

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

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

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

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

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

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

一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。

こちらもご覧ください

適用対象

GetFiles(String, String)

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

public:
 static cli::array <System::String ^> ^ GetFiles(System::String ^ path, System::String ^ searchPattern);
public static string[] GetFiles(string path, string searchPattern);
static member GetFiles : string * string -> string[]
Public Shared Function GetFiles (path As String, searchPattern As String) As String()

パラメーター

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());
        }
    }
}
open System.IO

try
    // Only get files that begin with the letter "c".
    let dirs = Directory.GetFiles(@"c:\", "c*")
    printfn $"The number of files starting with c is {dirs.Length}."
    for dir in dirs do
        printfn $"{dir}"
with e ->
    printfn $"The process failed: {e}"
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Try
            ' Only get files that begin with the letter "c".
            Dim dirs As String() = Directory.GetFiles("c:\", "c*")
            Console.WriteLine("The number of files starting with c is {0}.", dirs.Length)
            Dim dir As String
            For Each dir In dirs
                Console.WriteLine(dir)
            Next
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

注釈

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

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

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

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

searchPattern は、2 つのピリオド ("..") で終わることはできません。または、2 つのピリオド ("..") の後に DirectorySeparatorChar または AltDirectorySeparatorCharを含めることはできません。また、無効な文字を含めることもできます。 GetInvalidPathChars メソッドを使用して、無効な文字のクエリを実行できます。

Note

.NET Framework のみ:searchPattern でアスタリスクワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、このメソッドは指定した拡張子を持つ拡張子beginのファイルも返します。 たとえば、検索パターン "*.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

Note

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

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

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

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

一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。

こちらもご覧ください

適用対象

GetFiles(String, String, EnumerationOptions)

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

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

パラメーター

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 メソッドを使用して、無効な文字のクエリを実行できます。

Note

.NET Framework のみ:searchPattern でアスタリスクワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、このメソッドは指定した拡張子を持つ拡張子beginのファイルも返します。 たとえば、検索パターン "*.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

Note

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

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

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

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

一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。

適用対象

GetFiles(String, String, SearchOption)

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

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

パラメーター

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 メソッドを使用して、無効な文字のクエリを実行できます。

Note

.NET Framework のみ:searchPattern でアスタリスクワイルドカード文字を使用し、3 文字のファイル拡張子 ("*.txt" など) を指定すると、このメソッドは指定した拡張子を持つ拡張子beginのファイルも返します。 たとえば、検索パターン "*.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

Note

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

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

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

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

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

一般的な I/O タスクの一覧については、「 一般的な I/O タスク」を参照してください。

こちらもご覧ください

適用対象