Directory.GetFiles

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)          

返回指定目录中与指定的搜索模式匹配的文件的名称(包含其路径)。

命名空间:                     System.IO 程序集:          mscorlib(位于 mscorlib.dll)
语法
 
public static string[] GetFiles(
	string path,
	string searchPattern
)

参数

path
    Type:     System.String

要搜索的目录的相对或绝对路径。 此字符串不区分大小写。

searchPattern
    Type:     System.String

要与 path 中的文件名匹配的搜索字符串。  此参数可以包含有效的文本路径和通配符(* 和 ?) 字符(请参阅备注),但不支持正则表达式。

返回值

Type:     System.String[]

指定目录中与指定的搜索模式匹配的文件的完整名称(包含路径)的数组;如果未找到任何文件,则为空数组。

异常
 

Exception                      Condition          
IOException

path 是文件名。

- 或 -

发生了网络错误。

UnauthorizedAccessException

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

ArgumentException

path 为长度为零的字符串,仅包含空格,或包含一个或多个无效字符。 可以通过使用 GetInvalidPathChars 查询无效的字符。

- 或 -

searchPattern 不包含有效的模式。

ArgumentNullException

pathsearchPatternnull

PathTooLongException

指定的路径和/或文件名超过了系统定义的最大长度。 例如,在基于 Windows 的平台上,路径必须少于 248 个字符,且文件名必须少于 260 个字符。

DirectoryNotFoundException

指定的路径未找到或无效(例如,它在未映射的驱动器上)。

备注
 

返回的文件名追加到提供 path 参数和返回的文件名的顺序不能保证; 使用 Sort 方法是否需要特定的排序顺序。

searchPattern 可以是文本和通配符的组合字符,但不支持正则表达式。 在允许使用下列通配符说明符 searchPattern

通配符说明符

匹配

*(星号)

在该位置的零个或多个字符。

? (问号)

在该位置的零个或一个字符。

该通配符以外的字符是原义字符。 例如, searchPattern 字符串"* t"中的所有名称搜索 path 以字母"t"结尾。   searchPattern 字符串"s *"中的所有名称搜索 path 以字母"s"开头。

searchPattern 不能以两个句点结尾 ("...") 或包含两个句点 ("...")DirectorySeparatorCharAltDirectorySeparatorChar, ,也不可以包含任何无效字符。 你可以使用 GetInvalidPathChars 方法查询无效字符。

System_CAPS_note说明

当使用中的星号通配符字符 searchPattern 例如"*.txt"中指定的扩展的字符数将影响的搜索,如下所示︰

  • 如果指定的扩展名为 3 个字符,该方法将返回具有指定扩展名开头的扩展名的文件。 例如,"*.xls"返回"book.xls"和"book.xlsx"。

  • 在所有其他情况下,该方法返回与指定的扩展名完全匹配的文件。 例如,"*.ai"返回"file.ai",而不是"file.aif"。

当使用问号通配符字符时,此方法将返回与指定的文件扩展名匹配的文件。 例如,在目录中,搜索模式的给定两个文件、"file1.txt"和"file1.txtother","文件?。txt"返回只是第一个文件,而"file*.txt"的搜索模式返回这两个文件。

System_CAPS_note说明

此方法检查针对 8.3 文件名格式和长文件名的格式文件的名称,因为的搜索模式类似于"* 1*.txt"可能会返回意外的文件的名称。 例如,使用的搜索模式"* 1*.txt"返回"longfilename.txt",因为等效 8.3 文件名格式是"LONGFI~1.TXT"。

EnumerateFilesGetFiles 方法的行为有所不同,如下所示︰ 当您使用 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());
        }
    }
posted @ 2017-01-23 17:28  弄丢的小可爱🌸  阅读(4651)  评论(0编辑  收藏  举报