永发信息网

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

答案:2  悬赏:50  手机版
解决时间 2021-03-26 13:48
  • 提问者网友:欲望失宠
  • 2021-03-26 08:11
C#怎么将一个文件夹下所有文件(包括子文件夹内的)名字中包含某一字符的文件遍历出来,求其数量
最佳答案
  • 五星知识达人网友:枭雄戏美人
  • 2021-03-26 08:51
递归搜索

List strs = new List();
private void Form1_Load(object sender, EventArgs e)
{
DirectoryInfo dir = new DirectoryInfo("文件夹名称");
bianli(dir, "关键字");
MessageBox.Show("总共有" + strs.Count + "个文件有关键字");
}

///
/// 遍历文件夹并找出包含特定关键字的文件
///

/// 文件夹
/// 关键字
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/权源相片"));

请注意网络文件分隔符是/而不是\ 有些情况下会报错的追问嘿嘿,刚开始弄这个,有点晕,已经解决了,受益匪浅,谢谢

全部回答
  • 1楼网友:山河有幸埋战骨
  • 2021-03-26 09:13
递归到一个list表里,求List的count值就好追问

怎样把这个改成具有提问里的功能
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯