2014-02-09 44 views
0

我有這樣的代碼:如何爲每個目錄創建主組目錄名稱?

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

BaseDirectory在此是:d:\測試\ ImagesDirectories
htmlFiles是一個列表包含35個指數法每個索引目錄名
froypId爲int。

例如在htmlFiles第一索引i看到:Sat24_Africa0 在索引1我看到:Sat24_Africa1 在索引i看到:Sat24_Africa2 。 。 在索引5我看到:Sat24_Asia0 在索引6我看到:Sat24_Asia1 。 。 。 。 等35個目錄。

最終名單urlsDirectories是列表看起來像:

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 

那麼這是我在真正看到htmlFiles在索引0:

Sat24_Africa0 

這是我目前看到的在urls中的實際目錄索引0中的目錄:

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

如何進行更改?

回答

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