DirectoryInfo.GetFiles 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回当前目录的文件列表。
重载
GetFiles(String, EnumerationOptions) |
返回当前目录中与指定的搜索模式和枚举选项匹配的文件列表。 |
GetFiles(String, SearchOption) |
返回与给定的搜索模式匹配并且使用某个值确定是否在子目录中进行搜索的当前目录的文件列表。 |
GetFiles() |
返回当前目录的文件列表。 |
GetFiles(String) |
返回当前目录中与给定的搜索模式匹配的文件列表。 |
GetFiles(String, EnumerationOptions)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回当前目录中与指定的搜索模式和枚举选项匹配的文件列表。
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
描述要使用的搜索和枚举配置的对象。
返回
与 searchPattern
和 enumerationOptions
匹配的强类型化 FileInfo 对象的数组。
例外
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern
包含 方法GetInvalidPathChars()定义的一个或多个无效字符。
searchPattern
为 null
。
路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
注解
searchPattern
可以是文本和通配符的组合,但它不支持正则表达式。 允许在 中 searchPattern
使用以下通配符说明符。
通配符说明符 | 匹配 |
---|---|
*(星号) | 该位置的零个或多个字符。 |
? (问号) | 该位置的零个字符或一个字符。 |
通配符以外的字符是文本字符。 例如,字符串“*t”搜索以字母“t”结尾的所有名称。 字符串 searchPattern
“s*”搜索以字母“s”开头的所有名称 path
。
EnumerateFiles和 GetFiles 方法的不同之处如下:
使用 EnumerateFiles时,可以在返回整个集合 FileInfo 之前开始枚举 对象的集合。
因此,在使用许多文件和目录时, EnumerateFiles 可以更高效。
如果 中没有文件, DirectoryInfo此方法将返回一个空数组。
参数中 searchPattern
允许使用以下通配符说明符。
通配符 | 描述 |
---|---|
* | 零个或多个字符。 |
? | 正好为零个或一个字符。 |
无法保证返回的文件名的顺序;如果需要特定的排序顺序, Sort 请使用 方法。
允许使用通配符。 例如, searchPattern
字符串“*.txt”搜索扩展名为“txt”的所有文件名。 字符串 searchPattern
“s*”搜索以字母“s”开头的所有文件名。 如果没有文件,或者没有与 中的DirectoryInfo字符串匹配searchPattern
的文件,此方法将返回一个空数组。
注意
在 ((例如“*.txt”) )中使用星号通配符 searchPattern
时,匹配行为因指定文件扩展名的长度而异。 searchPattern
文件扩展名恰好为三个字符的 返回扩展名为三个或更多字符的文件,其中前三个字符与 中指定的searchPattern
文件扩展名匹配。 searchPattern
文件扩展名为 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)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回与给定的搜索模式匹配并且使用某个值确定是否在子目录中进行搜索的当前目录的文件列表。
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 类型的数组。
例外
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern
包含 方法GetInvalidPathChars()定义的一个或多个无效字符。
searchPattern
为 null
。
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 . . .
*/
open System.IO
let di = DirectoryInfo @"C:\Users\tomfitz\Documents\ExampleDir"
printfn "No search pattern returns:"
for fi in di.GetFiles() do
printfn $"{fi.Name}"
printfn "\nSearch pattern *2* returns:"
for fi in di.GetFiles "*2*" do
printfn $"{fi.Name}"
printfn "\nSearch pattern test?.txt returns:"
for fi in di.GetFiles "test?.txt" do
printfn $"{fi.Name}"
printfn "\nSearch pattern AllDirectories returns:"
for fi in di.GetFiles("*", SearchOption.AllDirectories) do
printfn $"{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 之前开始枚举 对象的集合。
因此,在使用许多文件和目录时, EnumerateFiles 可以更高效。
如果 中没有文件, DirectoryInfo此方法将返回一个空数组。
允许在 中 searchPattern
使用以下通配符说明符。
通配符 | 描述 |
---|---|
*(星号) | 零个或多个字符。 |
? (问号) | 正好为零个或一个字符。 |
无法保证返回的文件名的顺序;如果需要特定的排序顺序, Sort 请使用 方法。
允许使用通配符。 例如, searchPattern
字符串“*.txt”搜索扩展名为“txt”的所有文件名。 字符串 searchPattern
“s*”搜索以字母“s”开头的所有文件名。 如果没有文件,或者没有与 中的DirectoryInfo字符串匹配searchPattern
的文件,此方法将返回一个空数组。
注意
在 ((例如“*.txt”) )中使用星号通配符 searchPattern
时,匹配行为因指定文件扩展名的长度而异。 searchPattern
文件扩展名恰好为三个字符的 返回扩展名为三个或更多字符的文件,其中前三个字符与 中指定的searchPattern
文件扩展名匹配。 searchPattern
文件扩展名为 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 属性的值:
另请参阅
适用于
GetFiles()
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回当前目录的文件列表。
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 类型的数组。
例外
路径无效(例如,路径位于未映射的驱动器上)。
示例
以下示例演示如何使用不同的搜索选项从目录中获取文件列表。 该示例假定一个目录具有名为 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 . . .
*/
open System.IO
let di = DirectoryInfo @"C:\Users\tomfitz\Documents\ExampleDir"
printfn "No search pattern returns:"
for fi in di.GetFiles() do
printfn $"{fi.Name}"
printfn "\nSearch pattern *2* returns:"
for fi in di.GetFiles "*2*" do
printfn $"{fi.Name}"
printfn "\nSearch pattern test?.txt returns:"
for fi in di.GetFiles "test?.txt" do
printfn $"{fi.Name}"
printfn "\nSearch pattern AllDirectories returns:"
for fi in di.GetFiles("*", SearchOption.AllDirectories) do
printfn $"{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 之前开始枚举 对象的集合。
因此,在使用许多文件和目录时, EnumerateFiles 可以更高效。
如果 中没有文件, DirectoryInfo此方法将返回一个空数组。
无法保证返回的文件名的顺序;如果需要特定的排序顺序, Sort 请使用 方法。
此方法预填充以下 FileInfo 属性的值:
另请参阅
适用于
GetFiles(String)
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
- Source:
- DirectoryInfo.cs
返回当前目录中与给定的搜索模式匹配的文件列表。
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 类型的数组。
例外
.NET Framework 和 2.1 之前的 .NET Core 版本:searchPattern
包含 方法GetInvalidPathChars()定义的一个或多个无效字符。
searchPattern
为 null
。
路径无效(例如,它位于未映射的驱动器上)。
调用方没有所要求的权限。
示例
以下示例演示如何使用不同的搜索选项从目录中获取文件列表。 该示例假定一个目录具有名为 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 . . .
*/
open System.IO
let di = DirectoryInfo @"C:\Users\tomfitz\Documents\ExampleDir"
printfn "No search pattern returns:"
for fi in di.GetFiles() do
printfn $"{fi.Name}"
printfn "\nSearch pattern *2* returns:"
for fi in di.GetFiles "*2*" do
printfn $"{fi.Name}"
printfn "\nSearch pattern test?.txt returns:"
for fi in di.GetFiles "test?.txt" do
printfn $"{fi.Name}"
printfn "\nSearch pattern AllDirectories returns:"
for fi in di.GetFiles("*", SearchOption.AllDirectories) do
printfn $"{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*”搜索以字母“s”开头的所有名称 path
。
EnumerateFiles和 GetFiles 方法的不同之处如下:
使用 EnumerateFiles时,可以在返回整个集合 FileInfo 之前开始枚举 对象的集合。
因此,在使用许多文件和目录时, EnumerateFiles 可以更高效。
如果 中没有文件, DirectoryInfo此方法将返回一个空数组。
参数中 searchPattern
允许使用以下通配符说明符。
通配符 | 描述 |
---|---|
* | 零个或多个字符。 |
? | 正好为零个或一个字符。 |
无法保证返回的文件名的顺序;如果需要特定的排序顺序, Sort 请使用 方法。
允许使用通配符。 例如, searchPattern
字符串“*.txt”搜索扩展名为“txt”的所有文件名。 字符串 searchPattern
“s*”搜索以字母“s”开头的所有文件名。 如果没有文件,或者没有与 中的DirectoryInfo字符串匹配searchPattern
的文件,此方法将返回一个空数组。
注意
在 ((例如“*.txt”) )中使用星号通配符 searchPattern
时,匹配行为因指定文件扩展名的长度而异。 searchPattern
文件扩展名恰好为三个字符的 返回扩展名为三个或更多字符的文件,其中前三个字符与 中指定的searchPattern
文件扩展名匹配。 searchPattern
文件扩展名为 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 属性的值: