DirectoryInfo.GetFileSystemInfos メソッド

定義

現在のディレクトリのファイルおよびサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。Retrieves an array of strongly typed FileSystemInfo objects representing files and subdirectories of the current directory.

オーバーロード

GetFileSystemInfos()

ディレクトリ内のすべてのファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo エントリの配列を返します。Returns an array of strongly typed FileSystemInfo entries representing all the files and subdirectories in a directory.

GetFileSystemInfos(String)

指定した検索条件に一致するファイルおよびサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search criteria.

GetFileSystemInfos(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致するファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search pattern and enumeration options.

GetFileSystemInfos(String, SearchOption)

指定した検索条件に一致するファイルおよびサブディレクトリを表す FileSystemInfo オブジェクトの配列を取得します。Retrieves an array of FileSystemInfo objects that represent the files and subdirectories matching the specified search criteria.

GetFileSystemInfos()

ディレクトリ内のすべてのファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo エントリの配列を返します。Returns an array of strongly typed FileSystemInfo entries representing all the files and subdirectories in a directory.

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

戻り値

FileSystemInfo[]

厳密に型指定された FileSystemInfo エントリの配列。An array of strongly typed FileSystemInfo entries.

例外

パスが正しくありません (たとえば、マップされていないドライブにあるなど)。The path is invalid (for example, it is on an unmapped drive).

次の例では、指定されたディレクトリにあるファイルとディレクトリをカウントします。The following example counts the files and directories under the specified directory.

using System;
using System.IO;

class DirectoryFileCount
{

    static long files = 0;
    static long directories = 0;

    static void Main()
    {
        try
        {
            Console.WriteLine("Enter the path to a directory:");

            string directory = Console.ReadLine();

            // Create a new DirectoryInfo object.
            DirectoryInfo dir = new DirectoryInfo(directory);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException("The directory does not exist.");
            }

            // Call the GetFileSystemInfos method.
            FileSystemInfo[] infos = dir.GetFileSystemInfos();

            Console.WriteLine("Working...");

            // Pass the result to the ListDirectoriesAndFiles
            // method defined below.
            ListDirectoriesAndFiles(infos);

            // Display the results to the console.
            Console.WriteLine("Directories: {0}", directories);
            Console.WriteLine("Files: {0}", files);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {

            Console.ReadLine();
        }
    }

    static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo)
    {
        // Check the FSInfo parameter.
        if (FSInfo == null)
        {
            throw new ArgumentNullException("FSInfo");
        }

        // Iterate through each item.
        foreach (FileSystemInfo i in FSInfo)
        {
            // Check to see if this is a DirectoryInfo object.
            if (i is DirectoryInfo)
            {
                // Add one to the directory count.
                directories++;

                // Cast the object to a DirectoryInfo object.
                DirectoryInfo dInfo = (DirectoryInfo)i;

                // Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos());
            }
            // Check to see if this is a FileInfo object.
            else if (i is FileInfo)
            {
                // Add one to the file count.
                files++;
            }
        }
    }
}
Imports System.IO



Module DirectoryFileCount

    Dim files As Long = 0
    Dim directories As Long = 0



    Sub Main()
        Try
            Console.WriteLine("Enter the path to a directory:")

            Dim directory As String = Console.ReadLine()

            ' Create a new DirectoryInfo object.
            Dim dir As New DirectoryInfo(directory)

            If Not dir.Exists Then
                Throw New DirectoryNotFoundException("The directory does not exist.")
            End If

            ' Call the GetFileSystemInfos method.
            Dim infos As FileSystemInfo() = dir.GetFileSystemInfos()

            Console.WriteLine("Working...")

            ' Pass the result to the ListDirectoriesAndFiles
            ' method defined below.
            ListDirectoriesAndFiles(infos)

            ' Display the results to the console. 
            Console.WriteLine("Directories: {0}", directories)
            Console.WriteLine("Files: {0}", files)

        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally

            Console.ReadLine()
        End Try

    End Sub


    Sub ListDirectoriesAndFiles(ByVal FSInfo() As FileSystemInfo)
        ' Check the FSInfo parameter.
        If FSInfo Is Nothing Then
            Throw New ArgumentNullException("FSInfo")
        End If

        ' Iterate through each item.
        Dim i As FileSystemInfo
        For Each i In FSInfo
            ' Check to see if this is a DirectoryInfo object.
            If TypeOf i Is DirectoryInfo Then
                ' Add one to the directory count.
                directories += 1

                ' Cast the object to a DirectoryInfo object.
                Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)

                ' Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos())
                ' Check to see if this is a FileInfo object.
            ElseIf TypeOf i Is FileInfo Then
                ' Add one to the file count.
                files += 1
            End If
        Next i

    End Sub
End Module

注釈

内にファイルまたはディレクトリが存在しない場合 DirectoryInfo 、このメソッドは空の配列を返します。If there are no files or directories in the DirectoryInfo, this method returns an empty array. このメソッドは再帰的ではありません。This method is not recursive.

サブディレクトリの場合、 FileSystemInfo このメソッドによって返されるオブジェクトは、派生クラスにキャストでき DirectoryInfo ます。For subdirectories, the FileSystemInfo objects returned by this method can be cast to the derived class DirectoryInfo. FileAttributesプロパティによって返される値を使用して FileSystemInfo.Attributes 、がファイルまたはディレクトリを表しているかどうかを確認し FileSystemInfo ます。Use the FileAttributes value returned by the FileSystemInfo.Attributes property to determine whether the FileSystemInfo represents a file or a directory.

このメソッドは、次のプロパティの値を事前に設定し FileSystemInfo ます。This method pre-populates the values of the following FileSystemInfo properties:

こちらもご覧ください

GetFileSystemInfos(String)

指定した検索条件に一致するファイルおよびサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search criteria.

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

パラメーター

searchPattern
String

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

戻り値

FileSystemInfo[]

検索基準に一致する、厳密に型指定された FileSystemInfo オブジェクトの配列。An array of strongly typed FileSystemInfo objects matching the search criteria.

例外

searchPattern に、GetInvalidPathChars() メソッドによって定義された 1 つ以上の無効な文字が含まれています。searchPattern contains one or more invalid characters defined by the GetInvalidPathChars() method.

searchPatternnullです。searchPattern is null.

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。The specified path is invalid (for example, it is on an unmapped drive).

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

次の例では、指定した検索パターンに一致するファイルとディレクトリをカウントします。The following example counts the files and directories that match the specified search pattern.

using System;
using System.IO;

class DirectoryFileCount
{

    static long files = 0;
    static long directories = 0;

    static void Main()
    {
        try
        {
            Console.WriteLine("Enter the path to a directory:");

            string directory = Console.ReadLine();

            Console.WriteLine("Enter a search string (for example *p*):");

            string searchString = Console.ReadLine();

            // Create a new DirectoryInfo object.
            DirectoryInfo dir = new DirectoryInfo(directory);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException("The directory does not exist.");
            }

            // Call the GetFileSystemInfos method.
            FileSystemInfo[] infos = dir.GetFileSystemInfos(searchString);

            Console.WriteLine("Working...");

            // Pass the result to the ListDirectoriesAndFiles
            // method defined below.
            ListDirectoriesAndFiles(infos, searchString);

            // Display the results to the console.
            Console.WriteLine("Directories: {0}", directories);
            Console.WriteLine("Files: {0}", files);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {

            Console.ReadLine();
        }
    }

    static void ListDirectoriesAndFiles(FileSystemInfo[] FSInfo, string SearchString)
    {
        // Check the parameters.
        if (FSInfo == null)
        {
            throw new ArgumentNullException("FSInfo");
        }
        if (SearchString == null || SearchString.Length == 0)
        {
            throw new ArgumentNullException("SearchString");
        }

        // Iterate through each item.
        foreach (FileSystemInfo i in FSInfo)
        {
            // Check to see if this is a DirectoryInfo object.
            if (i is DirectoryInfo)
            {
                // Add one to the directory count.
                directories++;

                // Cast the object to a DirectoryInfo object.
                DirectoryInfo dInfo = (DirectoryInfo)i;

                // Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos(SearchString), SearchString);
            }
            // Check to see if this is a FileInfo object.
            else if (i is FileInfo)
            {
                // Add one to the file count.
                files++;
            }
        }
    }
}
Imports System.IO



Module DirectoryFileCount

    Dim files As Long = 0
    Dim directories As Long = 0



    Sub Main()
        Try
            Console.WriteLine("Enter the path to a directory:")

            Dim directory As String = Console.ReadLine()

            Console.WriteLine("Enter a search string (for example *p*):")

            Dim searchString As String = Console.ReadLine()

            ' Create a new DirectoryInfo object.
            Dim dir As New DirectoryInfo(directory)

            If Not dir.Exists Then
                Throw New DirectoryNotFoundException("The directory does not exist.")
            End If

            ' Call the GetFileSystemInfos method.
            Dim infos As FileSystemInfo() = dir.GetFileSystemInfos(searchString)

            Console.WriteLine("Working...")

            ' Pass the result to the ListDirectoriesAndFiles
            ' method defined below.
            ListDirectoriesAndFiles(infos, searchString)

            ' Display the results to the console. 
            Console.WriteLine("Directories: {0}", directories)
            Console.WriteLine("Files: {0}", files)

        Catch e As Exception
            Console.WriteLine(e.Message)
        Finally

            Console.ReadLine()
        End Try

    End Sub


    Sub ListDirectoriesAndFiles(ByVal FSInfo() As FileSystemInfo, ByVal SearchString As String)
        ' Check the parameters.
        If FSInfo Is Nothing Then
            Throw New ArgumentNullException("FSInfo")
        End If
        If SearchString Is Nothing OrElse SearchString.Length = 0 Then
            Throw New ArgumentNullException("SearchString")
        End If

        ' Iterate through each item.
        Dim i As FileSystemInfo
        For Each i In FSInfo
            ' Check to see if this is a DirectoryInfo object.
            If TypeOf i Is DirectoryInfo Then
                ' Add one to the directory count.
                directories += 1

                ' Cast the object to a DirectoryInfo object.
                Dim dInfo As DirectoryInfo = CType(i, DirectoryInfo)

                ' Iterate through all sub-directories.
                ListDirectoriesAndFiles(dInfo.GetFileSystemInfos(SearchString), SearchString)
                ' Check to see if this is a FileInfo object.
            ElseIf TypeOf i Is FileInfo Then
                ' Add one to the file count.
                files += 1
            End If
        Next i

    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. たとえば、文字列 " * t" は、末尾に文字 "t" が付いているすべての名前を検索します。For example, the string "*t" searches for all names in ending with the letter "t". ".". searchPattern文字列 "s" は、 * path 文字 "s" で始まるすべての名前を検索します。The searchPattern string "s*" searches for all names in path beginning with the letter "s".

このメソッドは再帰的ではありません。This method is not recursive.

サブディレクトリの場合、 FileSystemInfo このメソッドによって返されるオブジェクトは、派生クラスにキャストでき DirectoryInfo ます。For subdirectories, the FileSystemInfo objects returned by this method can be cast to the derived class DirectoryInfo. FileAttributesプロパティによって返される値を使用して FileSystemInfo.Attributes 、がファイルまたはディレクトリを表しているかどうかを確認し FileSystemInfo ます。Use the FileAttributes value returned by the FileSystemInfo.Attributes property to determine whether the FileSystemInfo represents a file or a directory.

ワイルドカードを使用できます。Wild cards are permitted. たとえば、" searchPattern t" という文字列は、" * t" という文字で終わるすべてのディレクトリ名を検索し path ます。For example, the searchPattern string "*t" searches for all directory names in path ending with the letter "t". searchPattern文字列 "s" は、 * path 文字 "s" で始まるすべてのディレクトリ名を検索します。The searchPattern string "s*" searches for all directory names in path beginning with the letter "s".

文字列 ".." は、 searchPattern ディレクトリ名 "a. のように有効なディレクトリ名の一部として指定されている場合にのみ、で使用できます。b "のようになります。The string ".." can only be used in searchPattern if it is specified as a part of a valid directory name, such as in the directory name "a..b". ディレクトリ階層の上に移動するために使用することはできません。It cannot be used to move up the directory hierarchy. ファイルまたはディレクトリが存在しない場合、または内の文字列に一致するファイルやディレクトリがない場合 searchPattern DirectoryInfo 、このメソッドは空の配列を返します。If there are no files or directories, or no files or directories that match the searchPattern string in the DirectoryInfo, this method returns an empty array.

このメソッドは、次のプロパティの値を事前に設定し FileSystemInfo ます。This method pre-populates the values of the following FileSystemInfo properties:

こちらもご覧ください

GetFileSystemInfos(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致するファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。Retrieves an array of strongly typed FileSystemInfo objects representing the files and subdirectories that match the specified search pattern and enumeration options.

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

パラメーター

searchPattern
String

ディレクトリおよびファイルの名前と照合する検索文字列。The search string to match against the names of directories and files. このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。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.

戻り値

FileSystemInfo[]

searchPatternenumerationOptions に一致する、厳密に型指定された FileSystemInfo オブジェクトの配列。An array of strongly typed FileSystemInfo objects matching searchPattern and enumerationOptions.

例外

searchPattern に、GetInvalidPathChars() メソッドによって定義された 1 つ以上の無効な文字が含まれています。searchPattern contains one or more invalid characters defined by the GetInvalidPathChars() method.

searchPatternnullです。searchPattern is null.

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。The specified path is invalid (for example, it is on an unmapped drive).

呼び出し元に、必要なアクセス許可がありません。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. たとえば、文字列 " * t" は、末尾に文字 "t" が付いているすべての名前を検索します。For example, the string "*t" searches for all names in ending with the letter "t". ".". searchPattern文字列 "s" は、 * path 文字 "s" で始まるすべての名前を検索します。The searchPattern string "s*" searches for all names in path beginning with the letter "s".

このメソッドは再帰的ではありません。This method is not recursive.

サブディレクトリの場合、 FileSystemInfo このメソッドによって返されるオブジェクトは、派生クラスにキャストでき DirectoryInfo ます。For subdirectories, the FileSystemInfo objects returned by this method can be cast to the derived class DirectoryInfo. FileAttributesプロパティによって返される値を使用して FileSystemInfo.Attributes 、がファイルまたはディレクトリを表しているかどうかを確認し FileSystemInfo ます。Use the FileAttributes value returned by the FileSystemInfo.Attributes property to determine whether the FileSystemInfo represents a file or a directory.

ワイルドカードを使用できます。Wild cards are permitted. たとえば、" searchPattern t" という文字列は、" * t" という文字で終わるすべてのディレクトリ名を検索し path ます。For example, the searchPattern string "*t" searches for all directory names in path ending with the letter "t". searchPattern文字列 "s" は、 * path 文字 "s" で始まるすべてのディレクトリ名を検索します。The searchPattern string "s*" searches for all directory names in path beginning with the letter "s".

文字列 ".." は、 searchPattern ディレクトリ名 "a. のように有効なディレクトリ名の一部として指定されている場合にのみ、で使用できます。b "のようになります。The string ".." can only be used in searchPattern if it is specified as a part of a valid directory name, such as in the directory name "a..b". ディレクトリ階層の上に移動するために使用することはできません。It cannot be used to move up the directory hierarchy. ファイルまたはディレクトリが存在しない場合、または内の文字列に一致するファイルやディレクトリがない場合 searchPattern DirectoryInfo 、このメソッドは空の配列を返します。If there are no files or directories, or no files or directories that match the searchPattern string in the DirectoryInfo, this method returns an empty array.

このメソッドは、次のプロパティの値を事前に設定し FileSystemInfo ます。This method pre-populates the values of the following FileSystemInfo properties:

GetFileSystemInfos(String, SearchOption)

指定した検索条件に一致するファイルおよびサブディレクトリを表す FileSystemInfo オブジェクトの配列を取得します。Retrieves an array of FileSystemInfo objects that represent the files and subdirectories matching the specified search criteria.

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

パラメーター

searchPattern
String

ディレクトリおよびファイルの名前と照合する検索文字列。The search string to match against the names of directories and files. このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。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 all subdirectories. 既定値は TopDirectoryOnly です。The default value is TopDirectoryOnly.

戻り値

FileSystemInfo[]

検索条件に一致するファイル システム エントリの配列。An array of file system entries that match the search criteria.

例外

searchPattern に、GetInvalidPathChars() メソッドによって定義された 1 つ以上の無効な文字が含まれています。searchPattern contains one or more invalid characters defined by the GetInvalidPathChars() method.

searchPatternnullです。searchPattern is null.

searchOption は有効な SearchOption 値ではありません。searchOption is not a valid SearchOption value.

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。The specified path is invalid (for example, it is on an unmapped drive).

呼び出し元に、必要なアクセス許可がありません。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. たとえば、文字列 " * t" は、末尾に文字 "t" が付いているすべての名前を検索します。For example, the string "*t" searches for all names in ending with the letter "t". ".". searchPattern文字列 "s" は、 * path 文字 "s" で始まるすべての名前を検索します。The searchPattern string "s*" searches for all names in path beginning with the letter "s".

サブディレクトリの場合、 FileSystemInfo このメソッドによって返されるオブジェクトは、派生クラスにキャストでき DirectoryInfo ます。For subdirectories, the FileSystemInfo objects returned by this method can be cast to the derived class DirectoryInfo. FileAttributesプロパティによって返される値を使用して FileSystemInfo.Attributes 、がファイルまたはディレクトリを表しているかどうかを確認し FileSystemInfo ます。Use the FileAttributes value returned by the FileSystemInfo.Attributes property to determine whether the FileSystemInfo represents a file or a directory.

このメソッドは、次のプロパティの値を事前に設定し FileSystemInfo ます。This method pre-populates the values of the following FileSystemInfo properties:

こちらもご覧ください

適用対象