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

但是,我想知道,是否有更好的方法来使这个(更清晰)更快。

4

6 回答 6

3

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

于 2013-02-20T12:44:54.673 回答
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);
    }
}

资源

于 2013-02-20T12:41:38.363 回答
2

我选择的方法是:

DirectoryInfo di = new DirectoryInfo(@"teste\teste\teste\teste\");
di.Create();
于 2013-02-20T12:43:05.137 回答
2

根据 MSDN,您可以嵌套目录。创建目录

 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);
}
于 2013-02-20T12:41:29.557 回答
1

你的方法对于这个过程来说太复杂了。您不必也使用Split()方法来创建这种目录。

你可以像这样使用它;

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

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

如您所见,此过程创建嵌套的子目录。

在此处输入图像描述

于 2013-02-20T12:46:20.213 回答
1

如果您当前的目录是(比如说C:\)并且您想创建一个目录C:\A\B\C,那么我认为最好的方法是使用

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

如果您需要另一个根目录中的目录(例如D:\),那么您需要将完整路径指定为

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

do not need to have a for loop可以像 CreateDirectory 那样为您创建每个目录。

于 2013-02-20T12:49:40.727 回答