Как я могу создать "рекурсивно" папку и подпапку в C# - PullRequest
0 голосов
/ 18 марта 2020

** 1875 Ковезов
1875 Косенбаня
1875 Лелен c
1875 Лактаньяк
1875 Дологаз .. ...

1876 Хонведсег
1876 Хидак
**

У меня есть эта файловая структура в txt-файле

"Описание: первая часть строки состоит из 4 цифр, и она может быть равна (и root имя_фолдера), и она имеет содержит только одну и ту же подпапку из 4 цифр. txt-файл очень длинный, приблизительно 18000 строк

Пример:

C: / DATA / 1875 / Kovezes C: / DATA / 1875 / Koszenbanya

private void button3_Click (отправитель объекта, EventArgs e)

    {

        string line;
        string linecopy;
        int linecopyc;
        //string root = @"C:\Temp";
       // string subdir = @"~/ASD/";
        var file = new System.IO.StreamReader("adatforras.txt");

        while ((line = file.ReadLine()) != null)
        {
            listBox1.Items.Add(line);
            //linecopy = line;
            linecopy = line.Substring(0,4);
            label4.Text = linecopy;
            linecopyc = line.Length - 4;
            label4.Text = line.Substring(4, linecopyc);
            if (!Directory.Exists(linecopy))
            { 

              di = Directory.CreateDirectory(linecopy);



      DirectoryInfo dis = di.CreateSubdirectory(label4.Text);

            }
            else
            {
                DirectoryInfo dis = di.CreateSubdirectory(label4.Text);

            }



            }





    }

Вопрос: в чем основная проблема этого кода?

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

C# поддерживает возможность создания всех каталогов на пути к нужному пути, поэтому вы можете сделать что-то вроде этого:

while ((line = file.ReadLine()) != null) {
    // Other parts with labels etc.

    var directoryParts = line.split(" "); // To get number and name separately
    System.IO.Directory.CreateDirectory(Path.Combine("C:\\Data", directoryParts[0], directoryParts[1]));
}
0 голосов
/ 18 марта 2020

Я думаю, ваша подстрока начинается с пробела:

label4.Text = line.Substring(4, linecopyc);

Попробуйте обрезать ее или начать с позиции 5

label4.Text = line.Substring(5, linecopyc);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...