c# - 比较两个文件夹 - 模板与实际

标签 c# directoryinfo

我正在尝试将模板文件夹及其子文件夹与现有目录结构进行比较。我试图递归地遍历每个目录中的所有子文件夹。我的代码如下。

public void compareDirectories(DirectoryInfo Templatedir, DirectoryInfo Projectdir)
{
    DirectoryInfo[] recursiveTemplatedirs = Templatedir.GetDirectories("*.*");
    DirectoryInfo[] recursiveProjectdirs = Projectdir.GetDirectories("*.*");

    string recursiveName;
    string projectName;

    foreach (DirectoryInfo recursiveTemplatedir in recursiveTemplatedirs) 
    {
        recursiveName = recursiveTemplatedir.Name.ToString();
        foreach (DirectoryInfo recursiveProjectdir in recursiveProjectdirs)
        {
            projectName = recursiveProjectdir.Name.ToString();
            if (recursiveName == projectName)
            {
                lstTest.Items.Add("Match " + recursiveName);
            }
            else lstTest.Items.Add("No Match " + recursiveName);
        }

        compareDirectories(recursiveTemplatedir, recursiveProjectdir);
    }
}

当我尝试运行此命令时,出现错误:recursiveProjectdir 在此上下文中不存在。关于如何让它运行有什么想法吗?

最佳答案

您收到错误,因为 recursiveProjectdir 的范围仅位于 foreach 循环

foreach (DirectoryInfo recursiveTemplatedir in recursiveTemplatedirs) 
    {
        recursiveName = recursiveTemplatedir.Name.ToString();
        foreach (DirectoryInfo recursiveProjectdir in recursiveProjectdirs)
        {
        }
        //recursiveProjectdir doesn't exists outside the foreach loop
        compareDirectories(recursiveTemplatedir, recursiveProjectdir);
    }

关于c# - 比较两个文件夹 - 模板与实际,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8789204/

相关文章:

c# - 使用 LINQ 过滤 DirectoryInfo 的 ObservableCollection

c# - selectedIndex 在回发期间丢失 - ASP.NET

c# - 来自 lambda 的带有构造函数参数的 RelayCommand

c# - 我怎样才能以另一种形式访问我的列表?

c# - 在 C# 中使用 DirectoryInfo/FileInfo.MoveTo() 将文件或文件夹重命名为小写

C# 代码设置远程共享从其父目录继承权限

c# - 如何使用 EDMX 文件的映射生成 Entity Framework 6.x POCO 类?

c# - 如何在没有物理硬件的情况下利用多显示器设置的功能?

c# - DirectoryInfo.ToString 在父目录上的工作方式不同?

c# - 应用程序设置 + DirectoryInfo/FileInfo