C#查找文件foreach文件夹

时间:2014-01-22 08:58:13

标签: c#

基本上我尝试在指定路径中打开foreach文件夹。 例如 - 在指定路径中我有一个名为“A”的文件夹,在这个文件夹中有另外一个名为“B1”“B2”“B3”的文件夹等等,在这些文件夹里面还有另一个名为“C”foreach“C”文件夹的文件夹有一个名为“D”的文件。 我正在尝试将“B”文件夹放入组合框中,并在选择文件夹时打开“D”文件。

A > B1 > C > D.txt
  > B2 > C > D.txt
  > B3 > C > D.txt

等等。 请帮我管理这个。

var tfs =
TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(path));
var vcs = tfs.GetService<VersionControlServer>();
     private void PopulateTreeView()
    {
        var tfs =
            TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs2012:8080/tfs/DefaultCollection_2010/"));
        var vcs = tfs.GetService<VersionControlServer>();
        var workspace = vcs.QueryWorkspaces(workspaceName, vcs.AuthorizedUser, Environment.MachineName)[0];
        _workspace = workspace;
        tvWksNavigator.Nodes.Clear();
            var info = new DirectoryInfo(workspace.Folders[10].LocalItem);
            if (info.Exists)
            {
                var rootNode = new TreeNode(info.Name) { Tag = info };
                TreeNode bNode;
                DirectoryInfo[] subSubDirs;
                foreach (var subDir in info.GetDirectories().Where(c => c.Name=="Media"))
                {
                    bNode = new TreeNode(subDir.Name, 0, 0);
                    bNode.Tag = subDir;
                    subSubDirs = subDir.GetDirectories();

                    if (subSubDirs.Length != 0)
                    {
                        GetDirectories(subSubDirs, bNode);
                    }
                    rootNode.Nodes.Add(bNode);            
                }
                tvWksNavigator.Nodes.Add(rootNode);
            }
    }

    private void GetDirectories(DirectoryInfo[] subDirs,
        TreeNode nodeToAddTo)
    {
        TreeNode aNode;
        DirectoryInfo[] subSubDirs;
        foreach (var subDir in subDirs)
        {
            aNode = new TreeNode(subDir.Name, 0, 0);
            aNode.Tag = subDir;
            aNode.ImageKey = "folder";
            subSubDirs = subDir.GetDirectories();

            if (subSubDirs.Length != 0)
            {
                GetDirectories(subSubDirs, aNode);
            }
            nodeToAddTo.Nodes.Add(aNode);
        }
    }

1 个答案:

答案 0 :(得分:0)

这是一个可以让你前进的例子。首先,使用文件夹A中的文件夹填充ComboBox:

private void FillComboBox()
{
    foreach(string dir in Directory.GetDirectories(@"C:\Temp\A"))
    {
        DirectoryInfo info = new DirectoryInfo(dir);
        //foldersCB is the Name of the ComboBox
        foldersCB.Items.Add(info);
    }
}

当您从ComboBox中选择另一个文件夹时,您需要一个事件,我们将使用SelectedIndexChanged事件:

private void foldersCB_SelectedIndexChanged(object sender, EventArgs e)
{
    string selectedItem = foldersCB.SelectedItem.ToString();
    string filePath = GetFileFromFolder(selectedItem);
    //open the file using 'filePath'
}

GetFileFromFolder()是一种方法,只需获取与以D.txt结尾的路径匹配的第一个文件名:

private string GetFileFromFolder(string path)
{
    string fileName = Directory.GetFiles(path, "*D.txt", SearchOption.AllDirectories).FirstOrDefault();
    return fileName;
}

请注意,这只是一个让您前进而不是完整解决方案的示例!例如,如果您需要检查文件是否确实位于所选文件夹的子文件夹中,则需要自行构建额外的验证。希望这会有所帮助。