获取目录文件的非递归算法
获取目录文件的递归算法很简单,但是性能极低。
利用Stack技术实现非递归算法非常简单。
下面代码段是利用非递归算法写的目录下文件列表的获取。
//自动获取文件列表信息
List<FileInfo> item = new List<FileInfo>();
Stack<DirectoryInfo> directoryStack = new Stack<DirectoryInfo>();
DirectoryInfo dirParent = new DirectoryInfo(@"c:\");
directoryStack.Push(dirParent);
while (directoryStack.Count > 0)
{
//获取目录表
foreach (DirectoryInfo dir in dirParent.GetDirectories())
{
directoryStack.Push(dir);
}
//出栈,获取文件信息
if (directoryStack.Count > 0)
{
DirectoryInfo subDirectory = directoryStack.Peek();
//列出文件
foreach (FileInfo fi in subDirectory.GetFiles())
{
item.Add(fi);
}
dirParent = subDirectory;
directoryStack.Pop();
}
}
List<FileInfo> item = new List<FileInfo>();
Stack<DirectoryInfo> directoryStack = new Stack<DirectoryInfo>();
DirectoryInfo dirParent = new DirectoryInfo(@"c:\");
directoryStack.Push(dirParent);
while (directoryStack.Count > 0)
{
//获取目录表
foreach (DirectoryInfo dir in dirParent.GetDirectories())
{
directoryStack.Push(dir);
}
//出栈,获取文件信息
if (directoryStack.Count > 0)
{
DirectoryInfo subDirectory = directoryStack.Peek();
//列出文件
foreach (FileInfo fi in subDirectory.GetFiles())
{
item.Add(fi);
}
dirParent = subDirectory;
directoryStack.Pop();
}
}