2013-02-20 125 views
2

我需要創建一個目錄,但是,當我需要創建的目錄位於另一個目錄內時。事情是這樣的:創建目錄

 Directory.CreateDirectory(@"teste\teste\teste\teste\"); 

基本上,這個目錄不存在(當然),但是,在CreateDirectory(...)不支持該字符串的風格,我怎麼可以創建此目錄?

我的辦法,使之處在於:

private void createdir(string _path) 
    { 
     string path = string.Empty; 
     string[] dir = _path.Split('\\'); 

     for(int i=0;i<dir.Length;i++) 
     { 
      path += dir[i] + "\\"; 
      Directory.CreateDirectory(path); 
     } 
    } 

但是,我想知道,如果有更多更好的方式來使這個(更清晰),更快速。

+1

第一個字符串對我來說工作正常......當你使用它時會出現什麼問題? – Rawling 2013-02-20 12:42:28

+0

沒有這個答案沒有解決你的問題嗎? – 2013-02-20 12:55:51

回答

3

Directory.Create("c:\teste\teste\teste\teste");應該workt

2

根據MSDN,您可以嵌套目錄。 CreateDirectory

Directory.CreateDirectory("Public\\Html"); 
    Directory.CreateDirectory("\\Users\\User1\\Public\\Html"); 
    Directory.CreateDirectory("c:\\Users\\User1\\Public\\Html"); // using verbatim string you can escape slashes 


if(System.IO.Directory.Exists(yourPath)) 
{ 
    Directory.CreateDirectory(yourPath); 
} 
2

Directory.CreateDirectory()可以用作通過指定的路徑來創建目錄和子目錄。

下面是一個例子:

static void Main(string[] args) 
{ 
    try 
    { 
     Directory.CreateDirectory(@"D:\ParentDir\ChildDir\SubChildDir\"); 
     Console.WriteLine("Directories Created"); 
     Console.ReadLine(); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 

Source

2

我選擇的方法是:

DirectoryInfo di = new DirectoryInfo(@"teste\teste\teste\teste\"); 
di.Create(); 
+0

由於不需要'di.Exists'檢查。 'Create()'如果它已經存在,什麼也不做。 – 2013-02-20 12:46:30

1

你的方法是讓這個過程太複雜了。您也不必使用Split()方法來創建這種類型的目錄。

你可以像使用它;

string tempFolderAbsolutePath = @"C:\Temp"; 
string subFolderRelativePath = @"teste\teste\teste\teste\"; 

DirectoryInfo tempFolder = new DirectoryInfo(tempFolderAbsolutePath); 
DirectoryInfo subFolder = tempFolder.CreateSubdirectory(subFolderRelativePath); 

正如你所看到的,這個過程中產生嵌套子目錄。

enter image description here

1

如果你的當前目錄(比如C:\),你要創建一個目錄作爲C:\A\B\C,那麼我認爲最好的辦法是使用

Directory.CreateDirectory(@"\A\B\C"); 

如果您需要在目錄另一根(說,D:\),那麼你需要給完整的路徑爲

Directory.CreateDirectory(@"D:\A\B\C"); 

You do not need to have a for loop創建每個目錄爲CreateDirectory爲您做。