c#采用递归非递归两种方式遍历目录下所有文件
经典中的经典。
一 递归遍历
参考:http://www.fenghaibin.com/post/1025.html
也可以使用这种方法
public void GetFiles1(string pathname)
{
string[] subFiles = Directory.GetFiles(pathname);
foreach (string subFile in subFiles)
{
Console.WriteLine(subFile);
}
string[] subDirs = Directory.GetDirectories(pathname);
foreach (string subDir in subDirs)
{
GetFiles1(subDir);
}
}
二 非递归 在这里重点感谢 http://www.okbase.net/doc/details/2583 的作者 我在此作者基础上增加了 对无法访问目录的try 即使遇到不可访问目录也可以轻松跳过
//此函数采用非递归方式遍历问题 是所有中最好的遍历方法
public void GetAllDirList(string pathname)
{
Stack<string> skDir = new Stack<string>();
skDir.Push(pathname);
while (skDir.Count > 0)
{
pathname = skDir.Pop();
try
{
string[] subDirs = Directory.GetDirectories(pathname);
string[] subFiles = Directory.GetFiles(pathname);
if (subDirs != null)
{
for (int i = 0; i < subDirs.Length; i++)
{
skDir.Push(subDirs[i]);
}
if (subFiles != null)
{
for (int i = 0; i < subFiles.Length; i++)
{
listBox1.Items.Add(subFiles[i]);
}
}
}
}
catch (Exception ex) { }// 捕抓错误 什么都不做
}
}
平淡中储蓄成长
相关文章
发表评论
评论列表
- 这篇文章还没有收到评论,赶紧来抢沙发吧~