递归搜索
List<string> strs = new List<string>();
private void Form1_Load(object sender, EventArgs e)
{
DirectoryInfo dir = new DirectoryInfo("文件夹名称");
bianli(dir, "关键字");
MessageBox.Show("总共有" + strs.Count + "个文件有关键字");
}
/// <summary>
/// 遍历文件夹并找出包含特定关键字的文件
/// </summary>
/// <param name="dir">文件夹</param>
/// <param name="str">关键字</param>
void bianli(DirectoryInfo dir,string str)
{
FileInfo[] files = dir.GetFiles();
foreach (FileInfo f in files)
{
if (f.Name.IndexOf(str) >= 0)
{
strs.Add(f.Name);
}
}
DirectoryInfo[] dirs = dir.GetDirectories();
foreach (DirectoryInfo d in dirs)
{
bianli(d, str);
}
}
追问
这样写不对吗,应该怎样写呢
追答您这代码简直乱七八糟。。。
foreach是递归files中的所有文件 for 也是递归files中所有文件 这样会出现叠加次数几何级数增加的情况
方法真的用我上面那个bianli方法就好 .net程序的话 传入的文件夹地址换成网络地址就行了
可以DirectoryInfo dir = new DirectoryInfo(Server.mapPath("~/data/131023007039/权源相片"));
请注意网络文件分隔符是/而不是\ 有些情况下会报错的
追问嘿嘿,刚开始弄这个,有点晕,已经解决了,受益匪浅,谢谢
本回答被提问者和网友采纳