繁体   English   中英

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

[英]Can i create 2 SubDirectories at same time C#?

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

目录树

我是否需要像这样写:

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

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

要发布答案并提供替代方案,如果您只想使用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操作,这带来了一个你可以使用上面的场景除了它不会是静态的。

BCL没有任何东西可以做到这一点; 你必须为每一个调用CreateDirectory

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

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

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

/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(假设它还没有),你是抛出错误,还是只返回?

你可以创建像。

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

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

它将创建文件夹结构,如Dir1 - > Dir2 - > Dir3。

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

多级相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM