我可以同时创建2个SubDirectories C#?

时间:2016-12-14 16:34:21

标签: c# create-directory

我想创建一个像这样的简单目录树,尽管它不需要具有相同的名称

Directory Tree

我是否需要像这样写:

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

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

4 个答案:

答案 0 :(得分: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方法的用法,然后我接口允许我创建模拟的类,然后对我创建的软件进行单元测试而不执行I / O操作,这带来了一个场景你可以使用上面的内容,除非它不是静态的。

答案 1 :(得分:2)

BCL没有任何东西可以做到这一点;你必须为每个人打电话CreateDirectory

如果你有一组目录路径,你可以把它放在循环中:

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

答案 2 :(得分:1)

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

<?php
date_default_timezone_set("UTC");
echo $timestamp = date('Y-m-d');
echo " - ";
echo $daysInMonth = (int)date('t', $timestamp);
echo " - ";
echo $thisDayInMonth = (int)date('j', $timestamp);
echo " - ";
echo $daysRemaining = $daysInMonth - $thisDayInMonth;
?>

并且您想从那里添加子目录。如果是这种情况,如果目标是只需要引用子目录,那么我会采用@ColinM&#39的方法,但稍微修改它如下:

/home/XXX/Documents/Users

现在当你打电话时,你只需要提一下根

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要么落后/要么导致任何{ {1}} - 它将确保最终格式化正确。

当然,如果你采用这种方法,你需要决定如果directoryRoot为空会发生什么 - 你是否创建了directoryRoot(假设它已经不在那里),你抛出一个错误,还是只是回来?

答案 3 :(得分:0)

你可以创建像。

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

认为c:drive的根目录中没有Dir1。

它将像Dir1 - &gt; Dir2 - &gt; Dir3一样创建文件夹结构。

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

多级相同。