C# 中的文件遍歷方法,如 Directory.GetFiles()
和 Directory.EnumerateFiles()
,在處理大文件時可能會遇到性能問題。這是因為這些方法會將整個文件列表加載到內存中,如果文件數量非常多或者文件體積非常大,就可能導致內存不足的問題。
為了處理大文件,你可以使用 Directory.EnumerateFiles()
方法結合 yield return
關鍵字逐個遍歷文件。這樣可以避免一次性加載整個文件列表到內存中。下面是一個示例:
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\your\directory\path";
foreach (string file in Directory.EnumerateFiles(path, "*.*", SearchOption.AllDirectories))
{
Console.WriteLine(file);
// 在這里處理文件,例如讀取文件內容、移動文件等
}
}
}
這個示例中,Directory.EnumerateFiles()
方法會遞歸地遍歷指定目錄下的所有文件,并返回一個包含文件路徑的 IEnumerable<string>
集合。通過使用 yield return
關鍵字,我們可以逐個訪問文件路徑,從而避免一次性加載整個文件列表到內存中。這樣,即使處理大文件,程序也不會因為內存不足而崩潰。