导出 (0) 打印
全部展开
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
译文
原文

Directory.EnumerateDirectories 方法 (String)

更新:2010 年 9 月

返回指定路径中的目录名称的可枚举集合。

命名空间:  System.IO
程序集:  mscorlib(在 mscorlib.dll 中)

public static IEnumerable<string> EnumerateDirectories(
	string path
)

参数

path
类型:System.String
要搜索的目录。

返回值

类型:System.Collections.Generic.IEnumerable<String>
path 指定的目录中的目录名称的可枚举集合。

异常条件
ArgumentException

path 是零长度字符串、只包含空白或者包含在 GetInvalidPathChars 定义的无效字符。

ArgumentNullException

pathnull

DirectoryNotFoundException

path 无效,比如引用未映射的驱动器。

IOException

path 是一个文件名。

PathTooLongException

指定的路径、文件名或者两者都超出了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须小于 248 个字符,文件名必须小于 260 个字符。

SecurityException

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

UnauthorizedAccessException

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

path 参数中可以指定相对或绝对路径信息。 相对路径信息被解释为相对于您可以使用 GetCurrentDirectory 方法来确定的当前工作目录。 返回的目录名称的前缀为您在 path 参数中提供的值。 例如,如果在 path 参数中提供相对路径,则返回的目录名称将包含一个相对路径。

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

不缓存返回的集合;每次在集合上调用 GetEnumerator 都将启动一个新枚举。

下面的示例枚举指定路径中的顶层目录。


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class Program
{

    private static void Main(string[] args)
    {
        try
        {
            string dirPath = @"\\archives\2009\reports";

            // LINQ query.
            var dirs = from dir in 
                     Directory.EnumerateDirectories(dirPath)
                       select dir;

            // Show results.
            foreach (var dir in dirs)
            {
                // Remove path information from string.
                Console.WriteLine("{0}", 
                    dir.Substring(dir.LastIndexOf("\\") + 1));

            }
            Console.WriteLine("{0} directories found.", 
                dirs.Count<string>().ToString());

            // Optionally create a List collection.
            List<string> workDirs = new List<string>(dirs);
        }
        catch (UnauthorizedAccessException UAEx)
        {
            Console.WriteLine(UAEx.Message);
        }
        catch (PathTooLongException PathEx)
        {
            Console.WriteLine(PathEx.Message);
        }
    }
}


.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 系统要求

Date

修订记录

原因

2010 年 9 月

阐明了返回的目录名称的格式。

客户反馈

2010 年 7 月

更新了有关无缓存的备注。

信息补充。

社区附加资源

添加
显示:
© 2015 Microsoft