DirectoryInfo.GetFiles 方法

定义

返回当前目录的文件列表。

重载

GetFiles(String, EnumerationOptions)

返回当前目录中与指定的搜索模式和枚举选项匹配的文件列表。

GetFiles(String, SearchOption)

返回与给定的搜索模式匹配并且使用某个值确定是否在子目录中进行搜索的当前目录的文件列表。

GetFiles()

返回当前目录的文件列表。

GetFiles(String)

返回当前目录中与给定的搜索模式匹配的文件列表。

GetFiles(String, EnumerationOptions)

返回当前目录中与指定的搜索模式和枚举选项匹配的文件列表。

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.EnumerationOptions enumerationOptions);
member this.GetFiles : string * System.IO.EnumerationOptions -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String, enumerationOptions As EnumerationOptions) As FileInfo()

参数

searchPattern
String

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

enumerationOptions
EnumerationOptions

描述要使用的搜索和枚举配置的对象。

返回

FileInfo[]

searchPatternenumerationOptions 匹配的强类型化 FileInfo 对象的数组。

例外

.NET Framework 2.1 以前的 .NET Core 版本:包含方法定义的一个或多个 searchPattern 无效 GetInvalidPathChars() 字符。

searchPatternnull

路径无效(例如,它位于未映射的驱动器上)。

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

注解

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

通配符说明器 匹配
* (星号) 该位置中的零个或多个字符。
? (问号) 该位置中的零个或一个字符。

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

EnumerateFiles GetFiles 方法不同,如下所示:

  • 使用 时 EnumerateFiles ,可以在返回整个集合 FileInfo 之前开始枚举 对象的集合。

  • 使用 时 GetFiles ,必须等待返回整个 对象数组 FileInfo ,然后才能访问数组。

因此,当你使用许多文件和目录时, EnumerateFiles 可能更高效。

如果 中没有任何文件 DirectoryInfo ,此方法将返回一个空数组。

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

通配符 描述
* 零个或多个字符。
? 恰好零个或一个字符。

不保证返回的文件名的顺序;如果需要 Sort 特定的排序顺序,请使用 方法。

允许使用通配符。 例如,字符串 searchPattern "*.txt"搜索扩展名为"txt"的所有文件名。 字符串 searchPattern * "s"搜索以字母"s"开头的所有文件名。 如果没有文件,或者没有与 中的字符串匹配的文件, searchPattern DirectoryInfo 此方法将返回一个空数组。

备注

在文件中使用星号通配符 (例如"*.txt") ,匹配行为因指定文件扩展 searchPattern 名的长度而异。 文件扩展名正好为三个字符的 将返回扩展名为三个或多个字符的文件,其中前三个字符与 中指定的文件 searchPattern 扩展名匹配 searchPatternsearchPattern文件扩展名为 1、2 或 3 以上字符的 仅返回扩展名与 中指定的文件扩展名完全匹配的文件 searchPattern 。 使用问号通配符时,此方法仅返回与指定文件扩展名匹配的文件。 例如,给定目录中的两个文件"file1.txt"和"file1.txtother",则"file?.txt"的搜索模式仅返回第一个文件,而搜索模式"file *.txt"则返回这两个文件。

备注

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

此方法预先填充以下属性的值 FileInfo

适用于

GetFiles(String, SearchOption)

返回与给定的搜索模式匹配并且使用某个值确定是否在子目录中进行搜索的当前目录的文件列表。

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern, System::IO::SearchOption searchOption);
public System.IO.FileInfo[] GetFiles (string searchPattern, System.IO.SearchOption searchOption);
member this.GetFiles : string * System.IO.SearchOption -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String, searchOption As SearchOption) As FileInfo()

参数

searchPattern
String

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

searchOption
SearchOption

用于指定搜索操作是应仅包含当前目录还是应包含所有子目录的枚举值之一。

返回

FileInfo[]

FileInfo 类型的数组。

例外

.NET Framework 2.1 以前的 .NET Core 版本:包含方法定义的一个或多个 searchPattern 无效 GetInvalidPathChars() 字符。

searchPatternnull

searchOption 不是有效的 SearchOption 值。

路径无效(例如,它位于未映射的驱动器上)。

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

示例

以下示例演示如何使用不同的搜索选项从目录中获取文件列表。 该示例假定一个目录,该目录包含名为 log1.txt、log2.txt、test1.txt、test2.txt、test3.txt 的文件以及一个名为 SubFile.txt 的子目录。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.GetFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.GetFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/
Imports System.IO

Module Module1

    Sub Main()
        Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
        Console.WriteLine("No search pattern returns:")
        For Each fi In di.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.GetFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.GetFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", SearchOption.AllDirectories)
            Console.WriteLine(fi.Name)
        Next
    End Sub

End Module

' This code produces output similar to the following:

' No search pattern returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt

' Search pattern *2* returns:
' log2.txt
' test2.txt

' Search pattern test?.txt returns:
' test1.txt
' test2.txt
' test3.txt

' Search pattern AllDirectories returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt
' SubFile.txt
' Press any key to continue . . .

注解

EnumerateFiles GetFiles 方法不同,如下所示:

  • 使用 时 EnumerateFiles ,可以在返回整个集合 FileInfo 之前开始枚举 对象的集合。

  • 使用 时 GetFiles ,必须等待返回整个 对象数组 FileInfo ,然后才能访问数组。

因此,当你使用许多文件和目录时, EnumerateFiles 可能更高效。

如果 中没有任何文件 DirectoryInfo ,此方法将返回一个空数组。

中允许以下通配符说明符 searchPattern

通配符 描述
* (星号) 零个或多个字符。
? (问号) 恰好零个或一个字符。

不保证返回的文件名的顺序;如果需要 Sort 特定的排序顺序,请使用 方法。

允许使用通配符。 例如,字符串 searchPattern "*.txt"搜索扩展名为"txt"的所有文件名。 字符串 searchPattern * "s"搜索以字母"s"开头的所有文件名。 如果没有文件,或者没有与 中的字符串匹配的文件, searchPattern DirectoryInfo 此方法将返回一个空数组。

备注

在文件中使用星号通配符 (例如"*.txt") ,匹配行为因指定文件扩展 searchPattern 名的长度而异。 文件扩展名正好为三个字符的 将返回扩展名为三个或多个字符的文件,其中前三个字符与 中指定的文件 searchPattern 扩展名匹配 searchPatternsearchPattern文件扩展名为 1、2 或 3 以上字符的 仅返回扩展名与 中指定的文件扩展名完全匹配的文件 searchPattern 。 使用问号通配符时,此方法仅返回与指定文件扩展名匹配的文件。 例如,给定目录中的两个文件"file1.txt"和"file1.txtother",则"file?.txt"的搜索模式仅返回第一个文件,而搜索模式"file *.txt"则返回这两个文件。

以下列表显示了 参数的不同长度 searchPattern 的行为:

  • "*.abc"返回扩展名为.abc、.abcd、.abcde、.abcdef 等的文件。

  • "*.abcd"仅返回扩展名为.abcd 的文件。

  • "*.abcde"仅返回扩展名为.abcde 的文件。

  • "*.abcdef"仅返回扩展名为.abcdef 的文件。

备注

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

此方法预先填充以下属性的值 FileInfo

  1. Attributes

  2. CreationTime

  3. CreationTimeUtc

  4. LastAccessTime

  5. LastAccessTimeUtc

  6. LastWriteTime

  7. LastWriteTimeUtc

  8. Length

另请参阅

适用于

GetFiles()

返回当前目录的文件列表。

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles();
public System.IO.FileInfo[] GetFiles ();
member this.GetFiles : unit -> System.IO.FileInfo[]
Public Function GetFiles () As FileInfo()

返回

FileInfo[]

FileInfo 类型的数组。

例外

路径无效(例如,路径位于未映射的驱动器上)。

示例

下面的示例演示如何使用不同的搜索选项从目录中获取文件列表。 该示例假设有一个目录,其中包含名为 log1.txt、log2.txt、test1.txt、test2.txt、test3.txt 的文件,以及一个包含名为 SubFile.txt 的文件的子目录。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.GetFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.GetFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/
Imports System.IO

Module Module1

    Sub Main()
        Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
        Console.WriteLine("No search pattern returns:")
        For Each fi In di.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.GetFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.GetFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", SearchOption.AllDirectories)
            Console.WriteLine(fi.Name)
        Next
    End Sub

End Module

' This code produces output similar to the following:

' No search pattern returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt

' Search pattern *2* returns:
' log2.txt
' test2.txt

' Search pattern test?.txt returns:
' test1.txt
' test2.txt
' test3.txt

' Search pattern AllDirectories returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt
' SubFile.txt
' Press any key to continue . . .

注解

EnumerateFilesGetFiles 方法的区别如下:

  • 使用时 EnumerateFiles ,你可以在 FileInfo 返回整个集合之前开始枚举对象的集合。

  • 使用时 GetFiles ,必须等待返回整个对象数组,然后才能 FileInfo 访问数组。

因此,在处理多个文件和目录时, EnumerateFiles 可能更高效。

如果中没有任何文件,则 DirectoryInfo 此方法返回一个空数组。

不保证返回的文件名的顺序; Sort 如果需要特定的排序顺序,请使用方法。

此方法预先填充以下属性的值 FileInfo

另请参阅

适用于

GetFiles(String)

返回当前目录中与给定的搜索模式匹配的文件列表。

public:
 cli::array <System::IO::FileInfo ^> ^ GetFiles(System::String ^ searchPattern);
public System.IO.FileInfo[] GetFiles (string searchPattern);
member this.GetFiles : string -> System.IO.FileInfo[]
Public Function GetFiles (searchPattern As String) As FileInfo()

参数

searchPattern
String

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

返回

FileInfo[]

FileInfo 类型的数组。

例外

.NET Framework 2.1 以前的 .NET Core 版本:包含方法定义的一个或多个 searchPattern 无效 GetInvalidPathChars() 字符。

searchPatternnull

路径无效(例如,它位于未映射的驱动器上)。

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

示例

以下示例演示如何使用不同的搜索选项从目录中获取文件列表。 该示例假定一个目录,该目录包含名为 log1.txt、log2.txt、test1.txt、test2.txt、test3.txt 的文件以及一个名为 SubFile.txt 的子目录。

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"C:\Users\tomfitz\Documents\ExampleDir");
            Console.WriteLine("No search pattern returns:");
            foreach (var fi in di.GetFiles())
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern *2* returns:");
            foreach (var fi in di.GetFiles("*2*"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern test?.txt returns:");
            foreach (var fi in di.GetFiles("test?.txt"))
            {
                Console.WriteLine(fi.Name);
            }

            Console.WriteLine();

            Console.WriteLine("Search pattern AllDirectories returns:");
            foreach (var fi in di.GetFiles("*", SearchOption.AllDirectories))
            {
                Console.WriteLine(fi.Name);
            }
        }
    }
}
/*
This code produces output similar to the following:

No search pattern returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt

Search pattern *2* returns:
log2.txt
test2.txt

Search pattern test?.txt returns:
test1.txt
test2.txt
test3.txt

Search pattern AllDirectories returns:
log1.txt
log2.txt
test1.txt
test2.txt
test3.txt
SubFile.txt
Press any key to continue . . .

*/
Imports System.IO

Module Module1

    Sub Main()
        Dim di As DirectoryInfo = New DirectoryInfo("C:\ExampleDir")
        Console.WriteLine("No search pattern returns:")
        For Each fi In di.GetFiles()
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern *2* returns:")
        For Each fi In di.GetFiles("*2*")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern test?.txt returns:")
        For Each fi In di.GetFiles("test?.txt")
            Console.WriteLine(fi.Name)
        Next

        Console.WriteLine()

        Console.WriteLine("Search pattern AllDirectories returns:")
        For Each fi In di.GetFiles("*", SearchOption.AllDirectories)
            Console.WriteLine(fi.Name)
        Next
    End Sub

End Module

' This code produces output similar to the following:

' No search pattern returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt

' Search pattern *2* returns:
' log2.txt
' test2.txt

' Search pattern test?.txt returns:
' test1.txt
' test2.txt
' test3.txt

' Search pattern AllDirectories returns:
' log1.txt
' log2.txt
' test1.txt
' test2.txt
' test3.txt
' SubFile.txt
' Press any key to continue . . .

注解

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

通配符说明符 匹配
* (星号) 此位置中的零个或多个字符。
? (问号) 此位置中的零个或一个字符。

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

EnumerateFilesGetFiles 方法的区别如下:

  • 使用时 EnumerateFiles ,你可以在 FileInfo 返回整个集合之前开始枚举对象的集合。

  • 使用时 GetFiles ,必须等待返回整个对象数组,然后才能 FileInfo 访问数组。

因此,在处理多个文件和目录时, EnumerateFiles 可能更高效。

如果中没有任何文件,则 DirectoryInfo 此方法返回一个空数组。

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

通配符 描述
* 零个或多个字符。
? 正好为零或一个字符。

不保证返回的文件名的顺序; Sort 如果需要特定的排序顺序,请使用方法。

允许使用通配符。 例如, searchPattern 字符串 "* .txt" 搜索扩展名为 "txt" 的所有文件名。 字符串 searchPattern * "s"搜索以字母"s"开头的所有文件名。 如果没有文件,或者没有与 中的字符串匹配的文件, searchPattern DirectoryInfo 此方法将返回一个空数组。

备注

在文件中使用星号通配符 (例如"*.txt") ,匹配行为因指定文件扩展 searchPattern 名的长度而异。 文件扩展名正好为三个字符的 将返回扩展名为三个或多个字符的文件,其中前三个字符与 中指定的文件 searchPattern 扩展名匹配 searchPatternsearchPattern文件扩展名为 1、2 或 3 以上字符的 仅返回扩展名与 中指定的文件扩展名完全匹配的文件 searchPattern 。 使用问号通配符时,此方法仅返回与指定文件扩展名匹配的文件。 例如,给定目录中的两个文件"file1.txt"和"file1.txtother",则"file?.txt"的搜索模式仅返回第一个文件,而搜索模式"file *.txt"则返回这两个文件。

备注

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

此方法预先填充以下属性的值 FileInfo

另请参阅

适用于