单个类型文件的文件结构的递归算法

时间:2014-05-16 13:15:06

标签: c# wpf treeview

我想要一种算法,它从用户指定的目录开始生成文件结构,但只显示特定类型的文件(.resx)。到目前为止,我有下面的代码,它显示了文件结构并仅显示.resx文件,但问题是它显示了所有不包含.resx文件的目录。即如果treeviewitem或其任何子节点不包含.resx文件,则不应该存在。

void DirSearch(string sDir, TreeViewItem parentItem)
    {
        try
        {
            foreach (string d in Directory.GetDirectories(sDir))
            {
                TreeViewItem item = new TreeViewItem();
                item.Header = d;
                parentItem.Items.Add(item);
                foreach (string f in Directory.GetFiles(d, "*.resx"))
                    {
                        TreeViewItem subitem = new TreeViewItem();
                        subitem.Header = f;
                        subitem.Tag = f;
                        item.Items.Add(subitem);
                    }
                DirSearch(d, item);
            }

        }
        catch (System.Exception excpt)
        {
            Console.WriteLine(excpt.Message);
        }
    }

1 个答案:

答案 0 :(得分:1)

将表示目录的TreeViewItem添加到其父 ,如果它有子项(* .resx文件或包含* .resx文件的子目录)。请注意,在进行检查之前,会递归调用DirSearch。

    void DirSearch(string sDir, TreeViewItem parentItem)
    {
        ......

        foreach (string d in Directory.GetDirectories(sDir))
        {
            TreeViewItem item = new TreeViewItem();
            item.Header = d;
            foreach (string f in Directory.GetFiles(d, "*.resx"))
            {
                TreeViewItem subitem = new TreeViewItem();
                subitem.Header = f;
                subitem.Tag = f;
                item.Items.Add(subitem);
            }
            DirSearch(d, item);

            if (item.Items.Count > 0)
                parentItem.Items.Add(item);
        }

        ......
    }