次の方法で共有


DirectoryInfo.GetFileSystemInfos メソッド

定義

現在のディレクトリのファイルおよびサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。

オーバーロード

GetFileSystemInfos()

ディレクトリ内のすべてのファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo エントリの配列を返します。

GetFileSystemInfos(String)

指定した検索条件に一致するファイルおよびサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。

GetFileSystemInfos(String, EnumerationOptions)

指定した検索パターンと列挙オプションに一致するファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。

GetFileSystemInfos(String, SearchOption)

指定した検索条件に一致するファイルおよびサブディレクトリを表す FileSystemInfo オブジェクトの配列を取得します。

GetFileSystemInfos()

ソース:
DirectoryInfo.cs
ソース:
DirectoryInfo.cs
ソース:
DirectoryInfo.cs

ディレクトリ内のすべてのファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo エントリの配列を返します。

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 エントリの配列。

例外

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

次の例では、指定したディレクトリの下にあるファイルとディレクトリをカウントします。

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

let mutable files = 0
let mutable directories = 0

let rec listDirectoriesAndFiles (fsInfo: FileSystemInfo[]) =
    // Check the FSInfo parameter.
    if fsInfo = null then
        nullArg "fsInfo"

    // Iterate through each item.
    for i in fsInfo do
        // Check to see if this is a DirectoryInfo object.
        match i with 
        | :? DirectoryInfo as dInfo ->
            // Add one to the directory count.
            directories <- directories + 1

            // Iterate through all sub-directories.
            listDirectoriesAndFiles (dInfo.GetFileSystemInfos())
        // Check to see if this is a FileInfo object.
        | :? FileInfo ->
            // Add one to the file count.
            files <- files + 1
        | _ -> ()

try
    printfn "Enter the path to a directory:"

    let directory = stdin.ReadLine()

    // Create a new DirectoryInfo object.
    let dir = DirectoryInfo directory

    if not dir.Exists then
        raise (DirectoryNotFoundException "The directory does not exist.")

    // Call the GetFileSystemInfos method.
    let infos = dir.GetFileSystemInfos()

    printfn "Working..."

    // Pass the result to the ListDirectoriesAndFiles
    // method defined below.
    listDirectoriesAndFiles infos

    // Display the results to the console.
    printfn $"Directories: {directories}"
    printfn $"Files: {files}"
with e ->
    printfn $"{e.Message}"
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このメソッドは空の配列を返します。 このメソッドは再帰的ではありません。

サブディレクトリの FileSystemInfo 場合、このメソッドによって返されるオブジェクトは、派生クラス DirectoryInfoにキャストできます。 FileAttributesプロパティによって返される値をFileSystemInfo.Attributes使用して、 FileSystemInfo がファイルとディレクトリのどちらを表すかを判断します。

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

こちらもご覧ください

適用対象

GetFileSystemInfos(String)

ソース:
DirectoryInfo.cs
ソース:
DirectoryInfo.cs
ソース:
DirectoryInfo.cs

指定した検索条件に一致するファイルおよびサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。

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

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

戻り値

検索基準に一致する、厳密に型指定された FileSystemInfo オブジェクトの配列。

例外

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

searchPatternnullです。

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

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

次の例では、指定した検索パターンに一致するファイルとディレクトリをカウントします。

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

let mutable files = 0
let mutable directories = 0

let rec listDirectoriesAndFiles (fsInfo: FileSystemInfo[]) searchString =
    // Check the parameters.
    if fsInfo = null then
        nullArg "fsInfo"

    if String.IsNullOrEmpty searchString then
        invalidArg "searchString" "Search string cannot be empty."
    
    // Iterate through each item.
    for i in fsInfo do
        // Check to see if this is a DirectoryInfo object.
        match i with
        | :? DirectoryInfo as dInfo ->
            // Add one to the directory count.
            directories <- directories + 1

            // Iterate through all sub-directories.
            listDirectoriesAndFiles (dInfo.GetFileSystemInfos searchString) searchString
        // Check to see if this is a FileInfo object.
        | :? FileInfo ->
            // Add one to the file count.
            files <- files + 1
        | _ -> ()

try
    printfn "Enter the path to a directory:"

    let directory = stdin.ReadLine()

    printfn "Enter a search string (for example *p*):"

    let searchString = stdin.ReadLine()

    // Create a new DirectoryInfo object.
    let dir = DirectoryInfo directory

    if not dir.Exists then
        raise (DirectoryNotFoundException "The directory does not exist.")

    // Call the GetFileSystemInfos method.
    let infos = dir.GetFileSystemInfos searchString

    printfn "Working..."

    // Pass the result to the ListDirectoriesAndFiles
    // method defined below.
    listDirectoriesAndFiles infos searchString

    // Display the results to the console.
    printfn $"Directories: {directories}"
    printfn $"Files: {files}"
with e ->
    printfn $"{e.Message}"
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使用できます。

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

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

このメソッドは再帰的ではありません。

サブディレクトリの FileSystemInfo 場合、このメソッドによって返されるオブジェクトは、派生クラス DirectoryInfoにキャストできます。 FileAttributesプロパティによって返される値をFileSystemInfo.Attributes使用して、 FileSystemInfo がファイルとディレクトリのどちらを表すかを判断します。

ワイルドカードを使用できます。 たとえば、 searchPattern 文字列 "*t" は、末尾に文字 "t" を付けてすべてのディレクトリ名 path を検索します。 文字列 "s*" は searchPattern 、文字 "s" で path 始まるすべてのディレクトリ名を検索します。

文字列 ".." は、ディレクトリ名 "a.. など、 で有効なディレクトリ名の一部として指定されている場合にのみ使用 searchPattern できます。b". ディレクトリ階層を上に移動するために使用することはできません。 ファイルまたはディレクトリがない場合、または 内DirectoryInfoの文字列に一致searchPatternするファイルまたはディレクトリがない場合、このメソッドは空の配列を返します。

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

こちらもご覧ください

適用対象

GetFileSystemInfos(String, EnumerationOptions)

ソース:
DirectoryInfo.cs
ソース:
DirectoryInfo.cs
ソース:
DirectoryInfo.cs

指定した検索パターンと列挙オプションに一致するファイルとサブディレクトリを表す、厳密に型指定された FileSystemInfo オブジェクトの配列を取得します。

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

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

enumerationOptions
EnumerationOptions

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

戻り値

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

例外

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

searchPatternnullです。

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

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

注釈

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

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

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

このメソッドは再帰的ではありません。

サブディレクトリの FileSystemInfo 場合、このメソッドによって返されるオブジェクトは、派生クラス DirectoryInfoにキャストできます。 FileAttributesプロパティによって返される値をFileSystemInfo.Attributes使用して、 FileSystemInfo がファイルとディレクトリのどちらを表すかを判断します。

ワイルドカードを使用できます。 たとえば、 searchPattern 文字列 "*t" は、末尾に文字 "t" を付けてすべてのディレクトリ名 path を検索します。 文字列 "s*" は searchPattern 、文字 "s" で path 始まるすべてのディレクトリ名を検索します。

文字列 ".." は、ディレクトリ名 "a.. など、 で有効なディレクトリ名の一部として指定されている場合にのみ使用 searchPattern できます。b". ディレクトリ階層を上に移動するために使用することはできません。 ファイルまたはディレクトリがない場合、または 内DirectoryInfoの文字列に一致searchPatternするファイルまたはディレクトリがない場合、このメソッドは空の配列を返します。

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

適用対象

GetFileSystemInfos(String, SearchOption)

ソース:
DirectoryInfo.cs
ソース:
DirectoryInfo.cs
ソース:
DirectoryInfo.cs

指定した検索条件に一致するファイルおよびサブディレクトリを表す FileSystemInfo オブジェクトの配列を取得します。

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

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

searchOption
SearchOption

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

戻り値

検索条件に一致するファイル システム エントリの配列。

例外

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

searchPatternnullです。

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

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

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

注釈

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

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

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

サブディレクトリの場合、 FileSystemInfo このメソッドによって返されるオブジェクトは、派生クラス DirectoryInfoにキャストできます。 プロパティによって FileAttributes 返される値を使用して、 FileSystemInfo.Attributes がファイルまたはディレクトリを表しているかどうかを FileSystemInfo 判断します。

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

こちらもご覧ください

適用対象