C#查找每个文件夹的文件
基本上,我尝试在指定路径中打开每个文件夹的文件。 比如说- 在指定路径中,我有一个名为“a”的文件夹,在该文件夹中有另一个名为“B1”“B2”“B3”的文件夹,等等,在这些文件夹中有另一个名为“C”的文件夹,每个“C”文件夹中有一个名为“D”的文件。 我试图将“B”文件夹放入组合框,并在选择文件夹打开“D”文件时 等等。 请帮我处理这件事C#查找每个文件夹的文件,c#,C#,基本上,我尝试在指定路径中打开每个文件夹的文件。 比如说- 在指定路径中,我有一个名为“a”的文件夹,在该文件夹中有另一个名为“B1”“B2”“B3”的文件夹,等等,在这些文件夹中有另一个名为“C”的文件夹,每个“C”文件夹中有一个名为“D”的文件。 我试图将“B”文件夹放入组合框,并在选择文件夹打开“D”文件时 等等。 请帮我处理这件事 var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(path
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);
}
}
var-tfs=
tfstreamprojectcollectionfactory.GetTeamProjectCollection(新Uri(路径));
var vcs=tfs.GetService();
私有void PopulateTreeView()
{
var tfs=
TfsTeamProjectCollectionFactory.GetTeamProjectCollection(新Uri(“http://tfs2012:8080/tfs/DefaultCollection_2010/"));
var vcs=tfs.GetService();
var workspace=vcs.queryworkspace(workspaceName,vcs.AuthorizedUser,Environment.MachineName)[0];
_工作空间=工作空间;
tvWksNavigator.Nodes.Clear();
var info=new DirectoryInfo(workspace.Folders[10].LocalItem);
如果(信息存在)
{
var rootNode=newtreenode(info.Name){Tag=info};
树状bNode;
DirectoryInfo[]子目录;
foreach(info.GetDirectories()中的var subDir,其中(c=>c.Name==“Media”))
{
bNode=新树节点(子节点名称,0,0);
bNode.Tag=subDir;
subSubDirs=subDir.GetDirectories();
if(subSubDirs.Length!=0)
{
GetDirectories(subSubDirs,bNode);
}
rootNode.Nodes.Add(bNode);
}
tvWksNavigator.Nodes.Add(rootNode);
}
}
私有void GetDirectories(DirectoryInfo[]子目录,
TreeNode nodeToAddTo)
{
树状阳极;
DirectoryInfo[]子目录;
foreach(变量subDir在subDir中)
{
阳极=新的树节点(子节点名称,0,0);
阳极.Tag=subDir;
aNode.ImageKey=“文件夹”;
subSubDirs=subDir.GetDirectories();
if(subSubDirs.Length!=0)
{
获取目录(子目录、阳极);
}
nodeToAddTo.Nodes.Add(阳极);
}
}
以下是一个可以帮助您继续的示例。首先,用文件夹A
中的文件夹填充组合框:
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);
}
}
当从组合框中选择另一个文件夹时,您需要一个事件,我们将使用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;
}
请注意,这只是一个例子,让你去,而不是一个完整的解决方案!例如,如果需要检查文件是否确实位于所选文件夹的子文件夹中,则需要自己构建额外的验证。希望这能有所帮助。我制作了一个树状视图,但我无法确定每个文件夹的具体位置。是的,请显示您目前拥有的内容。你也知道文件夹的结构吗?会有B4吗?树可以扩展到C以外的目录吗?这将始终是文件夹结构,是的,树可以扩展到C以外的目录,它将始终命名为“C”。
private string GetFileFromFolder(string path)
{
string fileName = Directory.GetFiles(path, "*D.txt", SearchOption.AllDirectories).FirstOrDefault();
return fileName;
}