我发现Path.GetFileName()
在下面的代码中使用按我的意图工作,并为我提供了正确文件夹的名称,但如果我使用Path.GetDirectoryName()
它,则返回父 (UserGeneratedContent) 文件夹的名称。为什么当这两种方法都作为字符串传递相同的路径时会发生这种情况?为什么Path.GetFileName()
在目录上工作?
当我Path.GetFileName()
在 Treeview 中使用节点的文本时,它会找到它找到的文件夹的文本 - 这就是我想要发生的事情,但如果我使用Path.GetDirectoryName()
文本是每个节点从@"UserGeneratedContent"开始的完整路径。为什么会这样?
最后,我的代码可以改进吗?
private void CheckForBaseFolder()
{
if (Directory.Exists(@"UserGeneratedContent"))
{
DirectoryInfo info = new DirectoryInfo(@"UserGeneratedContent");
DirectoryInfo[] subdirs = info.GetDirectories();
if (subdirs.Length != 0)
{
string path = Path.Combine(@"UserGeneratedContent", subdirs[0].ToString());
treeView1.Nodes.Add(CheckForSubFolders(path));
treeView1.SelectedNode = treeView1.Nodes[0];
}
else { MessageBox.Show("No User-Generated Folders Or Files Found"); }
}
else { Directory.CreateDirectory(@"UserGeneratedContent"); }
}
private TreeNode CheckForSubFolders(string path)
{
TreeNode folder = new TreeNode(path);
folder.Text = Path.GetFileName(path); // Works as intended, but.....
folder.Text = Path.GetDirectoryName(path); // Returns the parent folder
foreach(var subdirectory in Directory.GetDirectories(path))
{
folder.Nodes.Add(CheckForSubFolders(subdirectory));
}
folder.ImageIndex = 0;
folder.SelectedImageIndex = 1;
return folder;
}