【问题标题】:How can i create "recursively" folder and sub folder in C#如何在 C# 中创建“递归”文件夹和子文件夹
【发布时间】:2020-03-18 15:03:59
【问题描述】:

**1875 科韦泽斯
1875 年科森巴尼亚
1875 年勒朗克
1875 拉克塔尼亚克
1875 年多洛加兹 .. ...

1876 年洪维赛格
1876 年希达克
**

我在 txt 文件中有这个文件结构

“描述:该行的第一部分是 4 位数字,它可以相等(和根文件夹名称)并且它必须只包含相同的 4 位数字子文件夹。txt 文件非常长,大约 18000 行

例子:

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

private void button3_Click(object sender, 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);

            }



            }





    }

问题是:这段代码的主要问题是什么?

【问题讨论】:

标签: c# directory


【解决方案1】:

我认为您的子字符串以空格开头:

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

尝试修剪它或从位置 5 开始

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

【讨论】:

  • System.ArgumentOutOfRangeException: '索引和长度必须引用字符串中的位置。参数名称:长度'
  • label4.Text = line.Substring(5, linecopyc-1);谢谢你!我用分隔符重新组织了 txt 文件;
  • 是的。抱歉 - linecopyc 也需要调整。
【解决方案2】:

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]));
}

【讨论】: