C#怎么将一个文件夹下所有文件(包括子文件夹内的)名字中包含某一字符的文件遍历出来,求其数量

请贴出代码

递归到一个list表里,求List的count值就好追问

怎样把这个改成具有提问里的功能

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-04-20
递归搜索

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/权源相片"));

请注意网络文件分隔符是/而不是\ 有些情况下会报错的

追问

嘿嘿,刚开始弄这个,有点晕,已经解决了,受益匪浅,谢谢

本回答被提问者和网友采纳
相似回答