[英]How can I create a tool's event at the same time while creating a tool? (C#, windows forms)
[英]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.