DirectoryInfo.GetFileSystemInfos 方法

定义

检索表示当前目录的文件和子目录的强类型 FileSystemInfo 对象的数组。

重载

GetFileSystemInfos()

返回表示某个目录中所有文件和子目录的强类型 FileSystemInfo 项的数组。

GetFileSystemInfos(String)

检索表示与指定的搜索条件匹配的文件和子目录的强类型 FileSystemInfo 对象的数组。

GetFileSystemInfos(String, EnumerationOptions)

检索强类型 FileSystemInfo 对象的数组,这些对象表示与指定的搜索模式和枚举选项匹配的文件和子目录。

GetFileSystemInfos(String, SearchOption)

检索表示与指定的搜索条件匹配的文件和子目录的 FileSystemInfo 对象的数组。

GetFileSystemInfos()

返回表示某个目录中所有文件和子目录的强类型 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[]

强类型 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++;
            }
        }
    }
}
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)

检索表示与指定的搜索条件匹配的文件和子目录的强类型 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[]

与搜索条件匹配的强类型 FileSystemInfo 对象的数组。

例外

.NET Framework 和 .net Core 版本早于2.1: searchPattern 包含一个或多个由方法定义的无效字符 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++;
            }
        }
    }
}
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

通配符说明符 匹配
* (星号) 此位置中的零个或多个字符。
? (问号) 此位置中的零个或一个字符。

通配符以外的字符为原义字符。 例如,字符串 " * t" 搜索以字母 "t" 结尾的所有名称。 ". searchPattern字符串 "s * " 搜索以 path 字母 "s" 开头的所有名称。

此方法不是递归的。

对于子目录, FileSystemInfo 此方法返回的对象可以转换为派生类 DirectoryInfo 。 使用 FileAttributes 由属性返回的值 FileSystemInfo.Attributes 来确定是 FileSystemInfo 表示文件还是目录。

允许使用通配符。 例如, searchPattern 字符串 " * t" 搜索以 path 字母 "t" 结尾的所有目录名称。 searchPattern字符串 "s * " 搜索以 path 字母 "s" 开头的所有目录名称。

如果将字符串 ".." searchPattern 指定为有效目录名称的一部分,则只能在中使用字符串 "..."。b "。 它不能用来向上移动目录层次结构。 如果没有文件或目录,或者没有与中的字符串匹配的文件或目录,则 searchPattern DirectoryInfo 此方法返回一个空数组。

此方法预先填充以下属性的值 FileSystemInfo

另请参阅

适用于

GetFileSystemInfos(String, EnumerationOptions)

检索强类型 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

描述要使用的搜索和枚举配置的对象。

返回

FileSystemInfo[]

searchPatternenumerationOptions 匹配的强类型 FileSystemInfo 对象的数组。

例外

.NET Framework 和 .net Core 版本早于2.1: searchPattern 包含一个或多个由方法定义的无效字符 GetInvalidPathChars()

searchPatternnull

指定的路径无效(例如,它位于未映射的驱动器上)。

调用方没有所要求的权限。

注解

searchPattern 可以是文字和通配符的组合,但不支持正则表达式。 中允许使用以下通配符说明符 searchPattern

通配符说明符 匹配
* (星号) 此位置中的零个或多个字符。
? (问号) 此位置中的零个或一个字符。

通配符以外的字符为原义字符。 例如,字符串 " * t" 搜索以字母 "t" 结尾的所有名称。 ". searchPattern字符串 "s * " 搜索以 path 字母 "s" 开头的所有名称。

此方法不是递归的。

对于子目录, FileSystemInfo 此方法返回的对象可以转换为派生类 DirectoryInfo 。 使用 FileAttributes 由属性返回的值 FileSystemInfo.Attributes 来确定是 FileSystemInfo 表示文件还是目录。

允许使用通配符。 例如, searchPattern 字符串 " * t" 搜索以 path 字母 "t" 结尾的所有目录名称。 searchPattern字符串 "s * " 搜索以 path 字母 "s" 开头的所有目录名称。

如果将字符串 ".." searchPattern 指定为有效目录名称的一部分,则只能在中使用字符串 "..."。b "。 它不能用来向上移动目录层次结构。 如果没有文件或目录,或者没有与中的字符串匹配的文件或目录,则 searchPattern DirectoryInfo 此方法返回一个空数组。

此方法预先填充以下属性的值 FileSystemInfo

适用于

GetFileSystemInfos(String, SearchOption)

检索表示与指定的搜索条件匹配的文件和子目录的 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

用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。 默认值是 TopDirectoryOnly

返回

FileSystemInfo[]

与搜索条件匹配的文件系统项的数组。

例外

.NET Framework 2.1 以前的 .NET Core 版本:包含方法定义的一个或多个 searchPattern 无效 GetInvalidPathChars() 字符。

searchPatternnull

searchOption 不是有效的 SearchOption 值。

指定的路径无效(例如,它位于未映射的驱动器上)。

调用方没有所要求的权限。

注解

searchPattern 可以是文字和通配符的组合,但不支持正则表达式。 中允许使用以下通配符说明符 searchPattern

通配符说明符 匹配
* (星号) 此位置中的零个或多个字符。
? (问号) 此位置中的零个或一个字符。

通配符以外的字符为原义字符。 例如,字符串 " * t" 搜索以字母 "t" 结尾的所有名称。 ". searchPattern字符串 "s * " 搜索以 path 字母 "s" 开头的所有名称。

对于子目录, FileSystemInfo 此方法返回的对象可以强制转换到派生类 DirectoryInfo 。 使用 FileAttributes 属性返回 FileSystemInfo.Attributes 的值来确定 是 FileSystemInfo 表示文件还是目录。

此方法预先填充以下属性的值 FileSystemInfo

另请参阅

适用于