C# 我可以同时创建两个子目录吗?
我想创建一个像这样的简单目录树,尽管它不需要有相同的名称 我需要这样写吗:C# 我可以同时创建两个子目录吗?,c#,create-directory,C#,Create Directory,我想创建一个像这样的简单目录树,尽管它不需要有相同的名称 我需要这样写吗: Directory.CreateDirectory("/home/XXX/Documents/Users/Pepe/datos/"); Directory.CreateDirectory("/home/XXX/Documents/Users/Juan"); 有没有在同一个字符串路径中创建“Pepe”和“Juan”的选项?没有,BCL中没有任何东西可以这样做;您必须为每个人调用CreateDirectory 如果有目录
Directory.CreateDirectory("/home/XXX/Documents/Users/Pepe/datos/");
Directory.CreateDirectory("/home/XXX/Documents/Users/Juan");
有没有在同一个字符串路径中创建“Pepe”和“Juan”的选项?没有,BCL中没有任何东西可以这样做;您必须为每个人调用
CreateDirectory
如果有目录路径集合,可以将其放入循环中:
foreach (string dirPath in directoryPaths)
{
Directory.CreateDirectory(dirPath);
}
要发布答案并提供替代方案,如果您只想使用一次
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操作的情况下对我创建的软件进行单元测试,这带来了一种场景,在这种场景中,您可以使用上述方法,除非它不是静态的 听起来您有一个公共根目录:
/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(假设它不在那里)、抛出错误还是返回?您可以像这样创建
System.IO.Directory.CreateDirectory(“c:/Dir1/Dir2/Dir3”)
认为在c:drive的根上没有Dir1
它将创建类似于Dir1-->Dir2-->Dir3的文件夹结构
若Die1在那个里,那个么它将创建子目录的其余部分
多个级别也一样。没有。但是你的方式有什么问题吗?@MarioDS——那么,家庭作业不是只针对那些希望为他们编写代码的人吗?谁在乎这是不是一个“家庭作业”问题?如果人们在整个大学期间都不被允许问任何问题,那么他们该如何学习?@ColinM——别担心,在家庭作业上寻求帮助本来没有什么错。我看到像马里奥兹这样的人总是这样评论。问题是,他们只是把作业问题扔到那里,没有其他什么问题,期望人们为他们做作业。@VictorMAnuelLimaDelgado--+1来自我,伙计。我认为这是一个好问题。但我认为人们之所以喜欢你,可能是因为“缺乏研究努力”。我认为这是站不住脚的;你是否应该总是说“我在谷歌上搜索了这个,却找不到答案”?那对我来说似乎是多余的。