I have a folder with far too many files in, and I want to go through each file one by one. The problem is that Directory.GetFiles returns a completed array, and this takes too long.
I would rather have an object I would point to a folder, then call a function that returns me the next file in the folder. Does .NET have a class like this please?
(I'd prefer to avoid win32 interops, as I plan to use this on Mono as well.)
Many thanks.
You can't do this in .NET 3.5, but you can in .NET 4.0, as per this blog post:
DirectoryInfo directory = new DirectoryInfo(@"\\share\symbols");
IEnumerable<FileInfo> files = directory.EnumerateFiles();
foreach (var file in files) {
Console.WriteLine("Name={0}, Length={1}", file.Name, file.Length);
}
(Likewise there's a static Directory.EnumerateFiles
method.)
I don't know whether that API has been ported to Mono yet.