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

请贴出代码... 请贴出代码 展开
 我来答
Nice_WP
2014-09-13 · TA获得超过1769个赞
知道大有可为答主
回答量:2877
采纳率:53%
帮助的人:922万
展开全部
递归到一个list表里,求List的count值就好
追问

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

互粉互粉吧0G9
推荐于2016-04-20 · TA获得超过226个赞
知道小有建树答主
回答量:170
采纳率:100%
帮助的人:90.6万
展开全部
递归搜索

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

请注意网络文件分隔符是/而不是\ 有些情况下会报错的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式