在网上,遍历文件夹的算法大多是用递归思想实现的 ,我查了一下资料,结合应用实际,总结了两个方法。
方法一、
public
void
FindAllFiles(
string
path)
... {
if (Directory.Exists(path)==true )
...{
DirectoryInfo[] ChildDirectory;//子目录集
FileInfo[] NewFileInfo;//当前所有文件
DirectoryInfo FatherDirectory = new DirectoryInfo(path); //当前目录
ChildDirectory = FatherDirectory.GetDirectories("*.*"); //得到子目录集
NewFileInfo = FatherDirectory.GetFiles();//得到文件集,可以进行操作
foreach (FileInfo file in NewFileInfo)
...{
listBox1.Items.Add((Object)file.FullName);
}
foreach (DirectoryInfo dirInfo in ChildDirectory)
...{
FindAllFiles(dirInfo.FullName);
}
}
}
... {
if (Directory.Exists(path)==true )
...{
DirectoryInfo[] ChildDirectory;//子目录集
FileInfo[] NewFileInfo;//当前所有文件
DirectoryInfo FatherDirectory = new DirectoryInfo(path); //当前目录
ChildDirectory = FatherDirectory.GetDirectories("*.*"); //得到子目录集
NewFileInfo = FatherDirectory.GetFiles();//得到文件集,可以进行操作
foreach (FileInfo file in NewFileInfo)
...{
listBox1.Items.Add((Object)file.FullName);
}
foreach (DirectoryInfo dirInfo in ChildDirectory)
...{
FindAllFiles(dirInfo.FullName);
}
}
}
方法二、
private
void
FindAllFiles(
string
folderpath)
... {
if (Directory.Exists(folderpath) == true)
...{
foreach (string str in Directory.GetFiles(folderpath))
...{
listBox1.Items.Add((Object)str.ToString());
}
foreach (string strfolder in Directory.GetDirectories(folderpath))
...{
FindAllFiles(strfolder);
}
}
}
... {
if (Directory.Exists(folderpath) == true)
...{
foreach (string str in Directory.GetFiles(folderpath))
...{
listBox1.Items.Add((Object)str.ToString());
}
foreach (string strfolder in Directory.GetDirectories(folderpath))
...{
FindAllFiles(strfolder);
}
}
}