创建目录

创建目录

问题描述:

我需要创建一个目录,但是,当我需要创建的目录位于另一个目录内时。事情是这样的:创建目录

 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

Directory.Create("c:\teste\teste\teste\teste");应该workt

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

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

我选择的方法是:

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

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

你的方法是让这个过程太复杂了。您也不必使用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

如果你的当前目录(比如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为您做。