获取目录文件的递归算法很简单,但是性能极低。
利用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();
}
}