Search code examples
.netdirectorygetfiles

Have Directory.GetFiles return one file at a time? (.NET)


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.


Solution

  • 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.