我有这段代码:
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
我如何进行更改?
答案 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);
}