class Program { static void Main(string[] args) { foreach (var f in enumfiles(@"D:\\")) { Console.WriteLine(f); } } static IEnumerable enumfiles(string dirname) { var stack = new Stack(); stack.Push(dirname); while (stack.Count > 0) { var present = stack.Pop(); foreach (var f in Directory.EnumerateFiles(present, "*")) { yield return f; } foreach (var d in Directory.EnumerateDirectories(present)) { stack.Push(d); } } } }