我能同时创建两个子目录吗?使用C#

3

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

Directory Tree

我需要这样写吗:

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

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

6
不行。但是你现在的方式有什么问题呢? - rory.ap
1
@MarioDS -- So? - rory.ap
1
难道作业参数不是只针对那些期望有人为他们编写代码的人吗?谁在乎这是否是一个“作业”问题?如果在整个大学阶段都不允许提问,人们如何能够学习呢? - ColinM
4
不用担心,寻求作业帮助本身并没有错。我经常看到像MarioDS那样的人评论这样的问题。问题在于当他们只是毫无章法地抛出了作业问题,并期望别人替他们完成时。 - rory.ap
1
@VictorMAnuelLimaDelgado -- 我给你点赞,伙计。我认为这是一个好问题。但我认为人们dv你可能是因为“缺乏研究努力”。我觉得这很无聊;难道你总是要说“我谷歌了一下,找不到答案吗?”这对我来说似乎是多余的。 - rory.ap
显示剩余5条评论
4个回答

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操作。这种情况下,您可以使用上述方法之一,但它将不是静态的。

2

没有内置到BCL中完成这个操作的方法;你需要为每一个目录调用CreateDirectory方法。

如果你有一组目录路径,你可以将其放在循环内部:

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

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 中有一个斜杠 /,它会确保最终格式正确,同时保留 HTML 标签。当然,如果你采用这种方法,你需要决定如果 directories 为空会发生什么--是否创建 directoryRoot(假设它不存在),抛出错误还是只返回空值。

0

你可以创建像这样的。

System.IO.Directory.CreateDirectory("c:/Dir1/Dir2/Dir3");

在C盘根目录下似乎没有Dir1文件夹。

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

如果Die1存在,则会创建其余的子目录。

对于多级别也是如此。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接