http://blog.csdn.net/limlimlim/article/details/8260911 转载
https://msdn.microsoft.com/zh-cn/library/wz42302f.aspx
第一种方式
System.IO.Directory.GetFiles()获取多个类型格式的文件 System.IO.Directory.GetFiles("c:","(*.exe|*.txt)");
第二种方式
var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));
但这种写法应该只有VS2008才支持,VS2005不支持
Directory.GetFiles 方法 (String, String)
返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径)。
public static string[] GetFiles(
string path,
string searchPattern
)
参数
- path
- Type: System.String
要搜索的目录的相对或绝对路径。 此字符串不区分大小写。
- searchPattern
- Type: System.String
要与 path 中的文件名匹配的搜索字符串。 此参数可以包含有效的文本路径和通配符(* 和 ?) 字符(请参阅备注),但不支持正则表达式。
Exception | Condition |
---|---|
IOException |
path 是文件名。 - 或 - 发生了网络错误。 |
UnauthorizedAccessException |
调用方没有所要求的权限。 |
ArgumentException |
path 为长度为零的字符串,仅包含空格,或包含一个或多个无效字符。 可以通过使用 GetInvalidPathChars 查询无效的字符。 - 或 - searchPattern 不包含有效的模式。 |
ArgumentNullException |
path 或 searchPattern 为 null。 |
PathTooLongException |
指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。 |
DirectoryNotFoundException |
指定的路径未找到或无效(例如,它在未映射的驱动器上)。 |
返回的文件名追加到提供 path 参数和返回的文件名的顺序不能保证; 使用 Sort 方法是否需要特定的排序顺序。
searchPattern 可以是文本和通配符的组合字符,但不支持正则表达式。 在允许使用下列通配符说明符 searchPattern。
通配符说明符 |
匹配 |
---|---|
*(星号) |
在该位置的零个或多个字符。 |
? (问号) |
在该位置的零个或一个字符。 |
该通配符以外的字符是原义字符。 例如, searchPattern 字符串"* t"中的所有名称搜索 path 以字母"t"结尾。 searchPattern 字符串"s *"中的所有名称搜索 path 以字母"s"开头。
searchPattern 不能以两个句点结尾 ("...") 或包含两个句点 ("...") 跟 DirectorySeparatorChar 或 AltDirectorySeparatorChar, ,也不可以包含任何无效字符。 你可以使用 GetInvalidPathChars 方法查询无效字符。
说明 |
---|
当使用中的星号通配符字符 searchPattern 例如"*.txt"中指定的扩展的字符数将影响的搜索,如下所示︰
当使用问号通配符字符时,此方法将返回与指定的文件扩展名匹配的文件。 例如,在目录中,搜索模式的给定两个文件、"file1.txt"和"file1.txtother","文件?。txt"返回只是第一个文件,而"file*.txt"的搜索模式返回这两个文件。 |
说明 |
---|
此方法检查针对 8.3 文件名格式和长文件名的格式文件的名称,因为的搜索模式类似于"* 1*.txt"可能会返回意外的文件的名称。 例如,使用的搜索模式"* 1*.txt"返回"longfilename.txt",因为等效 8.3 文件名格式是"LONGFI~1.TXT"。 |
EnumerateFiles 和 GetFiles 方法的行为有所不同,如下所示︰ 当您使用 EnumerateFiles, ,您可以开始之前,则返回整个集合枚举名称的集合; 当您使用 GetFiles, ,您必须等待的名称,然后才能访问该数组要返回的整个数组。 因此,当您使用多个文件和目录、 EnumerateFiles 可能会更有效。
path 参数可以指定相对或绝对路径信息。 相对路径信息被解释为相对于当前工作目录。 若要获取当前工作目录,请参阅 GetCurrentDirectory。
path 参数不区分大小写。
通用 I/O 任务的列表,请参阅 通用 I/O 任务。
下面的示例计算指定的字母开头的文件数。
using System;
using System.IO;
class Test
{
public static void Main()
{
try
{
// Only get files that begin with the letter "c."
string[] dirs = Directory.GetFiles(@"c:", "c*");
Console.WriteLine("The number of files starting with c is {0}.", dirs.Length);
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
}