2016-12-14 33 views
3

我想创建这样一个简单的目录树,虽然它并不需要具有相同的名称我可以在同一时间创建2个子目录C#吗?

Directory Tree

我是否需要写这样的:

Directory.CreateDirectory("/home/XXX/Documents/Users/Pepe/datos/"); 
Directory.CreateDirectory("/home/XXX/Documents/Users/Juan"); 

有没有在同一个字符串路径中创建“Pepe”和“Juan”的选项?

+6

不是。但是,您拥有它的方式有什么问题? –

+0

每次需要创建目录时,您都必须使用CreateDirectory方法。它不是过度设计的,这有什么问题? – LONG

+0

如果这样做不方便,则创建一个静态方法,将一组目录作为一个字符串接受,并将其作为一种便利方法使用。即。 'public static void CreateDirs(params string [] dirPaths){/ *循环数组并创建目录* /}' – Igor

回答

2

不,没有什么可以烧制BCL来做到这一点;你必须给每个人打电话CreateDirectory

如果你的目录路径集合,你可以把一个循环中:

foreach (string dirPath in directoryPaths) 
{ 
    Directory.CreateDirectory(dirPath); 
} 
4

要发布一个答案,并提供替代方案,如果你只是想有CreateDirectory方法的一个用法,然后你可以有一个方法,该方法使用参数params string[],并在调用方法时传入目录。

的代码看起来像这样

private static void CreateDirectories(params string[] directories) 
{ 
    foreach (string directory in directories) 
    { 
     Directory.CreateDirectory(directory); 
    } 
} 

您可以

CreateDirectories("/home/XXX/Documents/Users/Pepe/datos/", "/home/XXX/Documents/Users/Juan"); 

打电话,或者你可以在一个字符串数组传递

CreateDirectories(new [] { "/home/XXX/Documents/Users/Pepe/datos/", "/home/XXX/Documents/Users/Juan"}); 

我降低的使用System.IO方法做上述,然后我接口的类允许我创建嘲笑,然后ü nit测试我创建的软件,而不执行I/O操作,这会带来一种场景,您可以使用上述场景,除非它不是静态的。

1

这听起来像你有一个共同的根目录:

/home/XXX/Documents/Users 

,你想从那里添加子目录。如果是这样的话,如果我们的目标是只需要引用子目录,然后我会@ ColinM的办法去,但如下略有修改:

private static void CreateDirectories(string directoryRoot, params string[] directories) 
{ 
    foreach (string directory in directories) 
    { 
     Directory.CreateDirectory(Path.Combine(directoryRoot, directory)); 
    } 
} 

现在,当你调用它,你只需要提根一次

CreateDirectories("/home/XXX/Documents/Users", "Pepe/datos/", "Juan"); 

的好处约Path.Combine是,你不必担心有一个斜线/即无论是在directoryRoot尾随或领导在任何directories --IT的将确保最终格式正确。当然,如果你采用这种方法,你需要决定如果directories为空会发生什么 - 你是否创建了directoryRoot(假设它还没有),你会抛出一个错误还是做你只是回来?

0

你可以创建like。

System.IO.Directory。CreateDirectory( “C:/方向1 /方向2/DIR3”);

认为在c:盘根处没有Dir1。

它会像Dir1 - > Dir2 - > Dir3一样创建文件夹结构。

如果Die1在那里,那么它将创建其余的子目录。

相同的多个级别。

相关问题