In .NET 4.0 there's the Directory.EnumerateFiles method which returns an IEnumerable<string>
and is not loading all the files in memory. It's only once you start iterating over the returned collection that files will be returned and exceptions could be handled.