You need to get a directory tree, potentially including filenames, extending from any point in the directory hierarchy
using System.IO;
public IEnumerable<FileSystemInfo> GetAllFilesAndDirectories(string dir)
{
DirectoryInfo dirInfo = new DirectoryInfo(dir);
Stack<FileSystemInfo> stack = new Stack<FileSystemInfo>();
stack.Push(dirInfo);
while (dirInfo != null || stack.Count > 0)
{
FileSystemInfo fileSystemInfo = stack.Pop();
DirectoryInfo subDirectoryInfo = fileSystemInfo as DirectoryInfo;
if (subDirectoryInfo != null)
{
yield return subDirectoryInfo;
foreach (FileSystemInfo fsi in subDirectoryInfo.GetFileSystemInfos())
stack.Push(fsi);
dirInfo = subDirectoryInfo;
}
else
{
yield return fileSystemInfo;
dirInfo = null;
}
}
}
منبع : "C# 3.0 Cookbook™, Third Edition"