C# 在基文件夹和子目录中搜索具有特定名称的文件夹

本文关键字:文件夹 搜索 定名称 子目录 | 更新日期: 2023-09-27 17:56:50

>我有一个系统托盘应用程序,它利用上下文菜单根据SQL结果集动态创建文件夹列表。

生成 SQL 结果集后,这将返回活动任务的列表。然后,应用程序使用 for each 循环从结果集中为每个活动任务生成 ToolStripMenuItem。

这就是我开始挣扎的地方。我一直在寻找一段时间,以使用户能够打开这些动态创建的文件夹的最佳方法。

我已经创建了一个由发件人控制的单击事件处理程序,但是我想不出一种体面的(工作)方法来查找所创建文件夹的文件路径。

我有一个基本文件夹,让我们说"C:''"有两个子文件夹,2014 和 2015。我需要我的应用程序获取单击的文件夹名称并在"C:''"中搜索实际文件夹和"C:''"的子文件夹,然后使用 process.start 打开它。

我首先使用 System.IO.Directory.GetDirectory 为每个循环创建一个,但这似乎只找到第一组文件夹(例如:2014、2015),即使使用 SearchOption.AllDirectory 方法重载也是如此。代码示例:

string path2 = @"C:'";
foreach (string dir in System.IO.Directory.GetDirectories(path2, SearchOption.AllDirectories))
    {
        if (new DirectoryInfo(dir).Name.Contains(test))
        {
            MessageBox.Show(dir);
        }
    }

任何人都可以提供一些关于如何搜索包含预定义字符串的文件夹和子文件夹的想法(这不一定会完成完整的文件夹路径),以便可以返回完整的文件路径?

谢谢

C# 在基文件夹和子目录中搜索具有特定名称的文件夹

老实说,我什至不确定您的代码是如何编译的,因为在我的 C# 中,没有需要stringSearchOptionDirectory.GetDirectories(...)过载。

在我看来,你不需要递归,但实际上只需要使用特定的重载Directory.GetDirectories

string path2 = @"C:'";
foreach (string dir in Directory.GetDirectories(path2, test, SearchOption.AllDirectories))
{
    // do what you want with dir.
}

这说"对于名称与test匹配的每个目录和子目录path2,请..."。

为了获取所有子文件夹,您可以使用此代码

DirectoryInfo dirInfo = new DirectoryInfo(@"Path to Folder");
DirectoryInfo[] subFolders = dirInfo.GetDirectories();

然后搜索每个子文件夹,如果名称是 2014 或 2015 或其他什么......