如何在用户选择的根文件夹中创建一个包含一些子文件夹的文件夹?

How to create a folder having some subfolders, in a root folder selected by the user?

我有这段代码可以在用户选择的路径中创建子文件夹

FolderBrowserDialog folderBrs = new FolderBrowserDialog();

        if (folderBrs.ShowDialog() == DialogResult.OK)
        {
            System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(folderBrs.SelectedPath;

            dir.CreateSubdirectory("subfolder1");
            dir.CreateSubdirectory("subfolder2");

        } 

它工作正常,但问题是 ir 使子文件夹没有主文件夹,所以你尝试了这个代码

FolderBrowserDialog folderBrs = new FolderBrowserDialog();

        if (folderBrs.ShowDialog() == DialogResult.OK)
        {
            System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(folderBrs.SelectedPath + textBox1.Text.Trim());

            dir.CreateSubdirectory("subfolder1");
            dir.CreateSubdirectory("subfolder2");

        } 

如您所见,唯一的区别是添加了文本框,但是当我键入名称时,它不会创建文件夹,它什么也没有,但奇怪的是,如果我选择一个现有的文件夹它创建了包含子文件夹的文件夹,但主文件夹的名称与我选择的现有文件夹的名称混合在一起

我做错了什么?有什么建议吗?

这里是更正的代码,假设所选路径存在:

if ( folderBrs.ShowDialog() == DialogResult.OK )
{
  var dir = new DirectoryInfo(folderBrs.SelectedPath);
  dir = dir.CreateSubdirectory(textBox1.Text.Trim());
  dir.CreateSubdirectory("subfolder1");
  dir.CreateSubdirectory("subfolder2");
}

我们为所选路径获取目录信息的实例。

接下来我们从文本框创建子文件夹。

然后我们在里面创建两个子文件夹。

让我们将所需的路径创建为 string:

string dir = Path.Combine(folderBrs.SelectedPath + textBox1.Text.Trim(),
  "subfolder1",
  "subfolder2");

然后我们可以创建目录:

Directory.CreateDirectory(dir);

当然可以,您可以将两个片段合二为一:

using System.IO;

...

using (FolderBrowserDialog folderBrs = new FolderBrowserDialog()) {
  if (folderBrs.ShowDialog() == DialogResult.OK) 
    Directory.CreateDirectory(Path.Combine(
      folderBrs.SelectedPath + textBox1.Text.Trim(),
      "subfolder1",
      "subfolfer2" 
    ));   
}