c#窗体程序 查找某一个目录下的文件夹,找到的话并打开相应的文件夹

路径D盘下的test文件夹下面有很多个文件夹比如:ABC,ABC里面还有多个文件夹(例如:A下面有文件夹DEF;B下面有JKL)点击查找找到K,并且打开文件夹K。... 路径D盘下的test文件夹 下面有很多个文件夹比如:ABC ,ABC里面还有多个文件夹(例如:A下面有文件夹DEF;B下面有JKL)点击查找 找到K,并且打开文件夹K。 展开
 我来答
zwgsls
2014-05-16 · TA获得超过212个赞
知道小有建树答主
回答量:189
采纳率:100%
帮助的人:174万
展开全部
不知道你是否是只查找test下的文件夹还是test下的文件夹下的文件夹都行。下面的代码是只要test下的就可以(可以是文件夹下的文件夹)。要是不是这意思,你就把FindAndOpenDir方法中的递归部分去掉就可以了。
/*
* ------------------------------------------------------
*
* 文件名:Form1
*
* 文件描述:
*
* 命名空间:FideAllDir
*
* 作者:**
*
* 创建时间:5/16/2014 12:00:36 AM
*
* ------------------------------------------------------
*/

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace FideAllDir
{
public partial class Form1 : Form
{
const string StrPath = @"D:\test";
public Form1()
{
InitializeComponent();
}

private void btn_findAndOpen_Click(object sender, EventArgs e)
{
var isFind = FindAndOpenDir(StrPath, txt_dirName.Text.Trim());
if (!isFind)
{
string msg = string.Format("目录“{0}”下未找到文件夹“{1}”", StrPath, txt_dirName.Text.Trim());
MessageBox.Show(msg);
}
}
/// <summary>
/// 在指定目录下查找目录名,如果找到就打开。同时返回查找结果
/// </summary>
/// <param name="path">指定查找目录路径。</param>
/// <param name="dirName">待查找的目录名。</param>
/// <returns></returns>
public static bool FindAndOpenDir(string path, string dirName)
{
bool isFind = false;
if (Directory.Exists(path))
{//指定父目录存在时,才遍历子目录
var subDirs = Directory.EnumerateDirectories(path);
foreach (var subDir in subDirs)
{//递归遍历子目录,直到找到指定目录。
DirectoryInfo dirInfo = new DirectoryInfo(subDir);
if (dirInfo.Name == dirName)
{
isFind = true;
Process.Start(subDir);//打开目录
break;
}
else
{//递归查找。当然现在就遍历不是很好,应该把当前目录下文件夹查找完再查找子目录,你可以自己修改。
isFind = FindAndOpenDir(subDir, dirName);
}
}
}
if (!isFind)
{//TODO:自定义未找到处理

}
return isFind;
}
}
}
追问
我是自学的 所以有些问题不懂,还有一个问题,比如:要是文件夹名字是file001manage 、file002manage,如何实现输入file001就可以打开文件夹file001manage文件夹;输入file002就可以找到并打开file002manage文件夹,并且忽略文件夹大小写字母,这样有什么思路实现?谢谢
追答
忽略大小写的一个思路就是将string变量同时转换为大写或者小写。
不完全匹配的思路是调用string的Contains成员方法
修改:
将if (dirInfo.Name == dirName)修改为if (dirInfo.Name.Contains(dirName))即可
百度网友6936026
2014-05-15 · TA获得超过109个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:121万
展开全部
用IO名称空间里的Path类来做
追问
能不能详细说下
追答
using System;
using System.IO;
using System.Collections;

string [] subdir = Directory.GetDirectories(A);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式