C#directory.getfiles内存帮助

5 c#

这是我正在使用的代码:

using (StreamWriter output = new StreamWriter(Path.Combine(masterdestination, "Master.txt")))
{
     string masterfolders = sourcefolder1;
     string[] filess = Directory.GetFiles(masterfolders, "*.txt");
     foreach (string file in filess)
     {
        output.WriteLine(Path.GetFileName(file));
     }
}  
Run Code Online (Sandbox Code Playgroud)

此代码将搜索用户指定目录中任何txt文件的所有文件.这些目录有时包含2百万个文件.

在它运行时监视这个过程我已经看到它爬升到800MB的内存使用量.有没有办法可以保持这个过程的速度并限制它使用的内存?或者让它读取并转储并继续?哈希表?任何想法都会很棒.

Ric*_*dOD 14

Directory.GetFiles真的很糟糕.如果您可以使用.NET 4.0,那么您应该考虑使用Directory.EnumerateFiles.来自文档:

EnumerateFiles和GetFiles方法的不同之处如下:当您使用EnumerateFiles时,您可以在返回整个集合之前开始枚举名称集合; 当您使用GetFiles时,您必须等待返回整个名称数组,然后才能访问该数组.因此,当您使用许多文件和目录时,EnumerateFiles可以更高效.