Как создать папку с несколькими подпапками в папке root, выбранной пользователем? - PullRequest
1 голос
/ 14 июля 2020

У меня есть этот код для создания подпапок по пути, выбранному пользователем

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");

        } 

, он работает нормально, но проблема в том, что он делает подпапки без основной папки, поэтому y попробовал этот код

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");

        } 

как вы можете видеть, единственное отличие - это добавление textBox, но когда я набираю имя, оно не создает папку, ничего не происходит, но cur ios, если я выберите существующую папку, она создает папку с вложенными папками, но имя основной папки смешано с именем существующей папки, которую я выбрал

что я делаю не так? есть предложения?

Ответы [ 2 ]

1 голос
/ 14 июля 2020

Давайте создадим требуемый путь как 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" 
    ));   
}

    
1 голос
/ 14 июля 2020

Вот код исправлен, предполагая, что выбранный путь существует:

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

Мы берем экземпляр информации о каталоге для выбранного пути.

Затем мы создаем подпапку из текстовое поле.

Затем мы создаем в нем две подпапки.

...