要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语
本文档已存档,并且将不进行维护。

Directory.EnumerateFiles 方法 (String)

更新:2010 年 7 月

返回指定路径中的文件名的可枚举集合。

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

public static IEnumerable<string> EnumerateFiles(
	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 方法来确定的当前工作目录。

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

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

下面的示例枚举指定目录中的文件,读取文件的每一行,然后显示包含字符串“Europe”的行。


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

class Program
{
	static void Main(string[] args)
	{
        try
        {
			// LINQ query for all files containing the word 'Europe'.
			 var files = from file in 
				Directory.EnumerateFiles(@"\\archives1\library\")
				   where file.ToLower().Contains("europe")
				   select file;

			// Show results.
			foreach (var file in files)
			{
				Console.WriteLine("{0}", file);
			}
			Console.WriteLine("{0} files found.", 
				files.Count<string>().ToString());
		}
		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 年 7 月

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

信息补充。

显示: