System.IO.DirectoryInfo.EnumerateDirectories 方法 (String, SearchOption)

方法描述

返回与指定的搜索模式和搜索子目录选项匹配的目录信息的可枚举集合。

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

public IEnumerable EnumerateDirectories(
	string searchPattern,
	SearchOption searchOption
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
searchPattern System-String 搜索字符串。默认模式为“*”,该模式返回所有目录。
searchOption System-IO-SearchOption 用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。默认值为 TopDirectoryOnly。
返回值 System.Collections.Generic.IEnumerable 与 searchPattern 和 searchOption 匹配的目录的可枚举集合。

提示和注释

在 searchPattern 参数中允许使用以下通配说明符。

通配符

说明

*

零个或多个字符。

?

正好一个字符。

EnumerateDirectories 和 GetDirectories 方法不同点在于:当使用 EnumerateDirectories时,您可以在返回整个集合之前开始枚举 DirectoryInfo 对象的集合;当您使用 GetDirectories 时,则必须等待整个 DirectoryInfo 数组都被返回后才能访问数组。 因此,在处理许多文件和目录时,EnumerateDirectories 可能更高效。

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

Attributes

CreationTime

CreationTimeUtc

LastAccessTime

LastAccessTimeUtc

LastWriteTime

LastWriteTimeUtc

返回的集合未缓存;对于 GetEnumerator 方法在集合上的每次调用都将启动新枚举。

System.IO.DirectoryInfo.EnumerateDirectories 方法 (String, SearchOption)例子

然后,使用 ReadLines 方法读取该文件的每一行并将其显示(如果它包含单词 "Microsoft")。

using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        // Create a DirectoryInfo object of the starting directory.
        DirectoryInfo diTop = new DirectoryInfo(@"d:\");
        try
        {
            // Enumerate the files just in the top directory.
            foreach (var fi in diTop.EnumerateFiles())
            {
                try
                {
                    // Display each file over 10 MB;
                    if (fi.Length > 10000000)
                    {
                        Console.WriteLine("{0}\t\t{1}", fi.FullName, 
                                        fi.Length.ToString("N0"));
                    }
                }
                // Catch unauthorized access to a file.
                catch (UnauthorizedAccessException UnAuthTop)
                {
                    Console.WriteLine("{0}", UnAuthTop.Message);
                }
            }
            // Enumerate all subdirectories.
            foreach (var di in diTop.EnumerateDirectories("*"))
            {
                try
                {
                    // Enumerate each file in each subdirectory.
                    foreach (var fi in di.EnumerateFiles("*",
                    				SearchOption.AllDirectories))
                    {
                        try
                        {
                            // Display each file over 10 MB;
                            if (fi.Length > 10000000)
                            {
                                Console.WriteLine("{0}\t\t{1}", 
                                  fi.FullName, fi.Length.ToString("N0"));
                            }
                        }
                         // Catch unauthorized access to a file.
                        catch (UnauthorizedAccessException UnAuthFile)
                        {
                            Console.WriteLine("UnAuthFile: {0}", 
                                            UnAuthFile.Message);
                        }
                    }
                }
                // Catch unauthorized access to a subdirectory.
                catch (UnauthorizedAccessException UnAuthSubDir)
                {
                    Console.WriteLine("UnAuthSubDir: {0}", 
                                            UnAuthSubDir.Message);
                }
            }
        }
        // Catch error in directory path.
        catch (DirectoryNotFoundException DirNotFound)
        {
            Console.WriteLine("{0}", DirNotFound.Message);
        }
        // Catch unauthorized access to a first tier directory. 
        catch (UnauthorizedAccessException UnAuthDir)
        {
            Console.WriteLine("UnAuthDir: {0}", UnAuthDir.Message);
        }
        // Catch paths that are too long. 
	    catch (PathTooLongException LongPath)
	    {
	        Console.WriteLine("{0}", LongPath.Message);
	    }

    }
}

异常

异常 异常描述
ArgumentNullException searchPattern 为 null。
ArgumentOutOfRangeException searchOption 不是有效的 SearchOption 值。
DirectoryNotFoundException 封装在 DirectoryInfo 对象中的路径无效(例如,在未映射的驱动器上)。
SecurityException 调用方没有所要求的权限。

命名空间

namespace: System.IO

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

版本信息

.NET Framework 受以下版本支持:4 .NET Framework Client Profile 受以下版本支持:4

适用平台

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