如何为每个目录创建主组目录名称?

时间:2014-02-09 10:11:30

标签: c# winforms

我有这段代码:

foreach (var map in maps)
{
    // This starts a new group
    var downloadDirectory = Path.Combine(BaseDirectory, htmlFiles[groupId++]);
    BackgroundWorkerConfiguration.urlsDirectories.Add(downloadDirectory);
}

这里的BaseDirectory是:d:\ test \ ImagesDirectories
htmlFiles是一个包含35个索引的List,每个索引都有一个目录名称 froypId是int。

例如,在htmlFiles的第一个索引中,我看到:Sat24_Africa0 在索引1中,我看到:Sat24_Africa1 在索引中我看到:Sat24_Africa2 。 。 在索引5中,我看到:Sat24_Asia0 在索引6中,我看到:Sat24_Asia1 。 。 。 。 等35个目录。

最后,List的urlsDirectories是List:

In index 0 i see: d:\test\ImagesDirectories\Sat24_Africa0
In index 1 i see: d:\test\ImagesDirectories\Sat24_Africa1
In index 2 i see: d:\test\ImagesDirectories\Sat24_Africa2
.

。 。 在索引33中,我看到:d:\ test \ ImagesDirectories \ Sat24_South_america3

最后,我遍历此List urlsDirectories并创建所有35个目录。

for (int i = 0; i < BackgroundWorkerConfiguration.urlsDirectories.Count; i++)
{
    if (!Directory.Exists(Path.Combine(imagesDirectory, BackgroundWorkerConfiguration.urlsDirectories[i])))
    {
        Directory.CreateDirectory(Path.Combine(imagesDirectory, BackgroundWorkerConfiguration.urlsDirectories[i]));
    }
}

但是在基本目录下创建35个目录我希望首先有一个主目录用于欧洲,然后在欧洲下面有子目录:

非洲,亚洲,欧洲,中东,北美洲,大洋洲,南美洲

在非洲的每个目录下都有目录:Africa0 Africa1 Africa2 ....

所以它应该是这样的:

D:\test\ImagesDirectories\Europe\Africa\Africa0
D:\test\ImagesDirectories\Europe\Africa\Africa1
D:\test\ImagesDirectories\Europe\Africa\Africa2
D:\test\ImagesDirectories\Europe\Africa\Africa3
D:\test\ImagesDirectories\Europe\Africa\Africa4

D:\test\ImagesDirectories\Europe\Asia\Asia0
D:\test\ImagesDirectories\Europe\Asia\Asia1
D:\test\ImagesDirectories\Europe\Asia\Asia2
D:\test\ImagesDirectories\Europe\Asia\Asia3
D:\test\ImagesDirectories\Europe\Asia\Asia4

等等。现在我在urlsDirectories中的目录中有所有名称,但是我如何解析它们以及如何创建目录组?

这是我在BaseDirectory变量中看到的真实内容:

C:\Users\bout0_000\AppData\Local\WeatherMaps\WeatherMaps\ImagesDirectory

然后这就是我在index0中的htmlFiles中实际看到的内容:

Sat24_Africa0

这就是我现在在index0中的urlsDirector中实际看到的内容:

C:\Users\bout0_000\AppData\Local\WeatherMaps\WeatherMaps\ImagesDirectory\Sat24_Africa0

我如何进行更改?

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

foreach (var map in maps)
{
    // This starts a new group
    var count = "Sat24_".Length;
    var leafDirectory = htmlFiles[groupId++].Remove(0, count); // e.g. "Africa0"
    var continent = Regex.Match(leafDirectory, @"[A-Za-z_]+").Value; // e.g. "Africa"

    var downloadDirectory = Path.Combine(BaseDirectory, "Europe", continent, leafDirectory);
    BackgroundWorkerConfiguration.urlsDirectories.Add(downloadDirectory);
}