System.IO.DirectoryInfo.GetFileSystemInfos 方法 (String)

方法描述

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

语法定义(C# System.IO.DirectoryInfo.GetFileSystemInfos 方法 (String) 的用法)

public FileSystemInfo[] GetFileSystemInfos(
	string searchPattern
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
searchPattern System-String 搜索字符串。例如,“System*”可用于搜索所有以单词“System”开头的目录。
返回值 System.IO.FileSystemInfo[] 与搜索条件匹配的强类型 FileSystemInfo 对象的数组。

提示和注释

此方法不是递归方法。

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

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

字符串“..”只有在被指定为有效目录名的一部分(如在目录名“a..b”中)时,才能用在 searchPattern 中。 它不能用于沿着目录层次结构向上移动。 如果 DirectoryInfo 中没有文件或目录,或者没有与 searchPattern 字符串匹配的文件或目录,则此方法返回一个空数组。

此方法预填充下面的 FileSystemInfo 属性的值:

Attributes

CreationTime

CreationTimeUtc

LastAccessTime

LastAccessTimeUtc

LastWriteTime

LastWriteTimeUtc

System.IO.DirectoryInfo.GetFileSystemInfos 方法 (String)例子

下面的示例对与指定搜索模式相匹配的文件和目录进行计数。

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++;

            }

        }
    }
}

异常

异常 异常描述
ArgumentException searchPattern 包含由 GetInvalidPathChars 方法定义的一个或多个无效字符。
ArgumentNullException searchPattern 为 null。
DirectoryNotFoundException 指定的路径无效(例如,它位于未映射的驱动器上)。
SecurityException 调用方没有所要求的权限。

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。