Directory.EnumerateFiles 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回符合指定準則之完整檔名的可列舉集合。
多載
EnumerateFiles(String, String, SearchOption) |
傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合,並選擇性地搜尋子目錄。 |
EnumerateFiles(String, String, EnumerationOptions) |
傳回在所指定路徑中符合搜尋模式與列舉選項之完整檔案名稱的可列舉集合,並選擇性地搜尋子目錄。 |
EnumerateFiles(String) |
傳回指定路徑中完整檔名的可列舉集合。 |
EnumerateFiles(String, String) |
傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合。 |
EnumerateFiles(String, String, SearchOption)
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合,並選擇性地搜尋子目錄。
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::SearchOption searchOption);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.SearchOption searchOption);
static member EnumerateFiles : string * string * System.IO.SearchOption -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, searchOption As SearchOption) As IEnumerable(Of String)
參數
- path
- String
要搜尋之目錄的相對或絕對路徑。 這個字串不會區分大小寫。
- searchPattern
- String
要比對 path
中檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。
- searchOption
- SearchOption
其中一個列舉值,該值會指定搜尋作業應該只包含目前目錄還是包含所有子目錄。 預設值是 TopDirectoryOnly。
傳回
在 path
指定的目錄中,且符合所指定搜尋模式與搜尋選項之檔案完整名稱 (包含路徑) 的可列舉集合。
例外狀況
.NET Framework 和 2.1 之前的 .NET Core 版本:path
是長度為零的字串、只包含空格符或包含無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。
-或-
searchPattern
不包含有效模式。
searchOption
不是有效的 SearchOption 值。
path
無效,例如參考到未對應的磁碟機。
path
為檔案名稱。
指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。
呼叫端沒有必要的權限。
呼叫端沒有必要的權限。
範例
下列範例示範如何擷取目錄及其子目錄中的所有文本檔,並將其移至新的目錄。 移動檔案之後,檔案就不再存在於原始目錄中。
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories);
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt", SearchOption.AllDirectories)
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
下列範例會以遞歸方式列舉擴展名 .txt
為 的所有檔案、讀取檔案的每一行,如果它包含字串 “Microsoft”,則會顯示該行。
using System;
using System.IO;
using System.Linq;
class Program
{
static void Main(string[] args)
{
try
{
// Set a variable to the My Documents path.
string docPath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};
foreach (var f in files)
{
Console.WriteLine($"{f.File}\t{f.Line}");
}
Console.WriteLine($"{files.Count().ToString()} files found.");
}
catch (UnauthorizedAccessException uAEx)
{
Console.WriteLine(uAEx.Message);
}
catch (PathTooLongException pathEx)
{
Console.WriteLine(pathEx.Message);
}
}
}
open System
open System.IO
try
// Set a variable to the My Documents path.
let docPath =
Environment.GetFolderPath Environment.SpecialFolder.MyDocuments
let files =
query {
for file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories) do
for line in File.ReadLines file do
where (line.Contains "Microsoft")
select {| File = file; Line = line |}
}
for f in files do
printfn $"{f.File}\t{f.Line}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uAEx -> printfn $"{uAEx.Message}"
| :? PathTooLongException as pathEx -> printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Xml.Linq
Module Module1
Sub Main()
Try
Dim docPath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
Dim files = From chkFile In Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
From line In File.ReadLines(chkFile)
Where line.Contains("Microsoft")
Select New With {.curFile = chkFile, .curLine = line}
For Each f In files
Console.WriteLine($"{f.File}\t{f.Line}")
Next
Console.WriteLine($"{files.Count} files found.")
Catch uAEx As UnauthorizedAccessException
Console.WriteLine(uAEx.Message)
Catch pathEx As PathTooLongException
Console.WriteLine(pathEx.Message)
End Try
End Sub
End Module
備註
searchPattern
可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern
允許下列通配符規範。
通配符規範 | 相符項 |
---|---|
* (星號) | 該位置中的零或多個字元。 |
? (問號) | 該位置中只有一個字元。 |
通配符以外的字元是常值字元。 例如, searchPattern
字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱 path
。 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有名稱 path
。
注意
僅限 .NET Framework:當您在 searchPattern
中使用星號通配符,並指定三個字元擴展名時,例如 “*.txt”,此方法也會傳回擴展名開頭為指定擴展名的檔案。 例如,搜尋模式 「*.xls」 會同時傳回 「book.xls」 和 「book.xlsx」。 只有在搜尋模式中使用星號,且提供的擴展名剛好是三個字元時,才會發生此行為。 如果您在搜尋模式的某處使用問號通配符,此方法只會傳回完全符合指定擴展名的檔案。 下表描述 .NET Framework 中的這個異常狀況。
目錄中的檔案 | 搜尋模式 | .NET 5+ 傳回 | .NET Framework 傳回 |
---|---|---|---|
file.ai,file.aif | *。艾 | file.ai | file.ai |
book.xls,book.xlsx | *.xls | book.xls | book.xls,book.xlsx |
ello.txt、hello.txt、hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
不能以兩個句號結尾 (」。」) 或包含兩個 ( 句點」。」) 後面 DirectorySeparatorChar 接著 或 AltDirectorySeparatorChar,也無法包含任何無效字元。 您可以使用 GetInvalidPathChars 方法查詢無效字元。
您可以使用 參數指定相對路徑資訊 path
。 相對路徑資訊會解譯為相對於目前工作目錄,您可以使用 方法來判斷 GetCurrentDirectory 。
EnumerateFiles和 GetFiles 方法不同,如下所示:當您使用 EnumerateFiles時,您可以在傳回整個集合之前,開始列舉名稱的集合。 當您使用 GetFiles時,必須先等候傳回整個名稱陣列,才能存取陣列。 因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。
不會快取傳回的集合。 集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。
適用於
EnumerateFiles(String, String, EnumerationOptions)
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
傳回在所指定路徑中符合搜尋模式與列舉選項之完整檔案名稱的可列舉集合,並選擇性地搜尋子目錄。
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern, System::IO::EnumerationOptions ^ enumerationOptions);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern, System.IO.EnumerationOptions enumerationOptions);
static member EnumerateFiles : string * string * System.IO.EnumerationOptions -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String, enumerationOptions As EnumerationOptions) As IEnumerable(Of String)
參數
- path
- String
要搜尋之目錄的相對或絕對路徑。 這個字串不會區分大小寫。
- searchPattern
- String
要比對 path
中檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。
- enumerationOptions
- EnumerationOptions
物件,描述要使用的搜尋和列舉組態。
傳回
在 path
指定的目錄中,且符合所指定搜尋模式與列舉選項之檔案完整名稱 (包含路徑) 的可列舉集合。
例外狀況
.NET Framework 和 2.1 之前的 .NET Core 版本:path
是長度為零的字串、只包含空格符或包含無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。
-或-
searchPattern
不包含有效模式。
searchOption
不是有效的 SearchOption 值。
path
無效,例如參考到未對應的磁碟機。
path
為檔案名稱。
指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。
呼叫端沒有必要的權限。
備註
searchPattern
可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern
允許下列通配符規範。
通配符規範 | 相符項 |
---|---|
* (星號) | 該位置中的零或多個字元。 |
? (問號) | 該位置中只有一個字元。 |
通配符以外的字元是常值字元。 例如, searchPattern
字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱 path
。 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有名稱 path
。
注意
僅限 .NET Framework:當您在 searchPattern
中使用星號通配符,並指定三個字元擴展名時,例如 “*.txt”,此方法也會傳回擴展名開頭為指定擴展名的檔案。 例如,搜尋模式 「*.xls」 會同時傳回 「book.xls」 和 「book.xlsx」。 只有在搜尋模式中使用星號,且提供的擴展名剛好是三個字元時,才會發生此行為。 如果您在搜尋模式的某處使用問號通配符,此方法只會傳回完全符合指定擴展名的檔案。 下表描述 .NET Framework 中的這個異常。
目錄中的檔案 | 搜尋模式 | .NET 5+ 傳回 | .NET Framework 傳回 |
---|---|---|---|
file.ai,file.aif | *。艾 | file.ai | file.ai |
book.xls,book.xlsx | *.xls | book.xls | book.xls,book.xlsx |
ello.txt、hello.txt、hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
不能以兩個句號結尾 (」。」) 或包含兩個 ( 句點」。」) 後面 DirectorySeparatorChar 接著 或 AltDirectorySeparatorChar,也無法包含任何無效字元。 您可以使用 GetInvalidPathChars 方法查詢無效字元。
您可以使用 參數指定相對路徑資訊 path
。 相對路徑資訊會解譯為相對於目前工作目錄,您可以使用 方法來判斷 GetCurrentDirectory 。
EnumerateFiles和 GetFiles 方法不同,如下所示:當您使用 EnumerateFiles時,您可以在傳回整個集合之前,開始列舉名稱的集合。 當您使用 GetFiles時,必須先等候傳回整個名稱陣列,才能存取陣列。 因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。
不會快取傳回的集合。 集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。
適用於
EnumerateFiles(String)
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
傳回指定路徑中完整檔名的可列舉集合。
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path);
static member EnumerateFiles : string -> seq<string>
Public Shared Function EnumerateFiles (path As String) As IEnumerable(Of String)
參數
- path
- String
要搜尋之目錄的相對或絕對路徑。 這個字串不會區分大小寫。
傳回
path
指定的目錄中,檔案完整名稱 (包括路徑) 的可列舉集合。
例外狀況
.NET Framework 和 2.1 之前的 .NET Core 版本:path
是長度為零的字串、只包含空格符,或包含無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。
path
為 null
。
path
無效,例如參考到未對應的磁碟機。
path
為檔案名稱。
指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。
呼叫端沒有必要的權限。
呼叫端沒有必要的權限。
範例
下列範例示範如何擷取目錄中的所有檔案,並將其移至新的目錄。 移動檔案之後,檔案就不再存在於原始目錄中。
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory);
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles sourceDirectory
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory)
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
下列範例會列舉指定目錄中的檔案、讀取檔案的每一行,如果它包含字串 「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;
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);
}
}
}
open System
open System.IO
try
// All files containing the word 'Europe'.
let files =
Directory.EnumerateFiles @"\\archives1\library\"
|> Seq.filter (fun file -> file.ToLower().Contains "europe")
for file in files do
printfn $"{file}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uaEx ->
printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq
Module Module1
Sub Main()
Try
' LINQ query for all files containing the word 'Europe'.
Dim files = From file In Directory.EnumerateFiles("\\archives1\library\")
Where file.ToLower().Contains("europe")
For Each file In files
Console.WriteLine("{0}", file)
Next
Console.WriteLine("{0} files found.", files.Count.ToString())
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
End Module
備註
您可以使用 參數指定相對路徑資訊 path
。 相對路徑資訊會解譯為相對於目前工作目錄,您可以使用 方法來判斷 GetCurrentDirectory 。
EnumerateFiles和 GetFiles 方法不同,如下所示:當您使用 EnumerateFiles時,您可以在傳回整個集合之前,開始列舉名稱的集合。 當您使用 GetFiles時,必須先等候傳回整個名稱陣列,才能存取陣列。 因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。
未快取傳回的集合;集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。
適用於
EnumerateFiles(String, String)
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
傳回指定路徑中符合搜尋模式之完整檔名的可列舉集合。
public:
static System::Collections::Generic::IEnumerable<System::String ^> ^ EnumerateFiles(System::String ^ path, System::String ^ searchPattern);
public static System.Collections.Generic.IEnumerable<string> EnumerateFiles (string path, string searchPattern);
static member EnumerateFiles : string * string -> seq<string>
Public Shared Function EnumerateFiles (path As String, searchPattern As String) As IEnumerable(Of String)
參數
- path
- String
要搜尋之目錄的相對或絕對路徑。 這個字串不會區分大小寫。
- searchPattern
- String
要比對 path
中檔案名稱的搜尋字串。 這個參數可以包含有效常值路徑與萬用 (* 和 ?) 字元的組合,但是不支援規則運算式。
傳回
path
指定的目錄中,符合指定搜尋模式的檔案之完整名稱 (包括路徑) 的可列舉集合。
例外狀況
.NET Framework 和 2.1 之前的 .NET Core 版本:path
是長度為零的字串、只包含空格符,或包含無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。
-或-
searchPattern
不包含有效模式。
path
無效,例如參考到未對應的磁碟機。
path
為檔案名稱。
指定的路徑、檔案名稱,或兩者合計超出系統定義的長度上限。
呼叫端沒有必要的權限。
呼叫端沒有必要的權限。
範例
下列範例示範如何擷取目錄中的所有文本檔,並將其移至新的目錄。 移動檔案之後,檔案就不再存在於原始目錄中。
using System;
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string sourceDirectory = @"C:\current";
string archiveDirectory = @"C:\archive";
try
{
var txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt");
foreach (string currentFile in txtFiles)
{
string fileName = currentFile.Substring(sourceDirectory.Length + 1);
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName));
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
open System.IO
let sourceDirectory = @"C:\current"
let archiveDirectory = @"C:\archive"
try
let txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
for currentFile in txtFiles do
let fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
with e ->
printfn $"{e.Message}"
Imports System.IO
Module Module1
Sub Main()
Dim sourceDirectory As String = "C:\current"
Dim archiveDirectory As String = "C:\archive"
Try
Dim txtFiles = Directory.EnumerateFiles(sourceDirectory, "*.txt")
For Each currentFile As String In txtFiles
Dim fileName = currentFile.Substring(sourceDirectory.Length + 1)
Directory.Move(currentFile, Path.Combine(archiveDirectory, fileName))
Next
Catch e As Exception
Console.WriteLine(e.Message)
End Try
End Sub
End Module
下列範例會列舉指定目錄中擴展名為 「.txt」 的檔案、讀取檔案的每一行,並在包含字串 「Europe」 時顯示該行。
using System;
using System.Linq;
using System.IO;
class Program
{
static void Main(string[] args)
{
try
{
// LINQ query for all .txt files containing the word 'Europe'.
var files = from file in Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
where file.ToLower().Contains("europe")
select file;
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);
}
}
}
open System
open System.IO
try
// All .txt files containing the word 'Europe'.
let files =
Directory.EnumerateFiles(@"\\archives1\library\", "*.txt")
|> Seq.filter(fun file -> file.ToLower().Contains "europe")
for file in files do
printfn $"{file}"
printfn $"{Seq.length files} files found."
with
| :? UnauthorizedAccessException as uaEx ->
printfn $"{uaEx.Message}"
| :? PathTooLongException as pathEx ->
printfn $"{pathEx.Message}"
Imports System.IO
Imports System.Linq
Module Module1
Sub Main()
Try
' LINQ query for all .txt files containing the word 'Europe'.
Dim files = From file In Directory.EnumerateFiles("\\archives1\library\", "*.txt")
Where file.ToLower().Contains("europe")
For Each file In files
Console.WriteLine("{0}", file)
Next
Console.WriteLine("{0} files found.", files.Count.ToString())
Catch UAEx As UnauthorizedAccessException
Console.WriteLine(UAEx.Message)
Catch PathEx As PathTooLongException
Console.WriteLine(PathEx.Message)
End Try
End Sub
End Module
備註
searchPattern
可以是常值和通配符的組合,但不支援正則表達式。 在中 searchPattern
允許下列通配符規範。
通配符規範 | 相符項 |
---|---|
* (星號) | 該位置中的零或多個字元。 |
? (問號) | 該位置中只有一個字元。 |
通配符以外的字元是常值字元。 例如, searchPattern
字串 「*t」 會搜尋以字母 「t」 結尾的所有名稱 path
。 字串 searchPattern
“s*” 會搜尋以字母 “s” 開頭的所有名稱 path
。
注意
僅限 .NET Framework:當您在 searchPattern
中使用星號通配符,並指定三個字元擴展名時,例如 “*.txt”,此方法也會傳回擴展名開頭為指定擴展名的檔案。 例如,搜尋模式 「*.xls」 會同時傳回 「book.xls」 和 「book.xlsx」。 只有在搜尋模式中使用星號,且提供的擴展名剛好是三個字元時,才會發生此行為。 如果您在搜尋模式的某處使用問號通配符,此方法只會傳回完全符合指定擴展名的檔案。 下表描述 .NET Framework 中的這個異常。
目錄中的檔案 | 搜尋模式 | .NET 5+ 傳回 | .NET Framework 傳回 |
---|---|---|---|
file.ai,file.aif | *。艾 | file.ai | file.ai |
book.xls,book.xlsx | *.xls | book.xls | book.xls,book.xlsx |
ello.txt、hello.txt、hello.txtt | ?ello.txt | hello.txt | hello.txt |
searchPattern
不能以兩個句點結尾 (“。」) 或包含兩個句點 (“.”。) 後面接著 DirectorySeparatorChar 或 AltDirectorySeparatorChar,也無法包含任何無效的字元。 您可以使用 GetInvalidPathChars 方法查詢無效字元。
您可以使用 參數指定相對路徑資訊 path
。 相對路徑資訊會解譯為相對於目前的工作目錄,您可以使用 方法來判斷 GetCurrentDirectory 。
EnumerateFiles和 GetFiles 方法會如下所示:當您使用 EnumerateFiles時,可以在傳回整個集合之前開始列舉名稱集合;當您使用 GetFiles時,必須先等候傳回整個名稱陣列,才能存取數位。 因此,當您使用許多檔案和目錄時, EnumerateFiles 可能會更有效率。
傳回的集合不會快取。 集合上的 每個呼叫 GetEnumerator 都會啟動新的列舉。