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
关键字,我们可以逐个访问文件路径,从而避免一次性加载整个文件列表到内存中。这样,即使处理大文件,程序也不会因为内存不足而崩溃。