2016-12-14 7 views
3

가 나는동시에 두 개의 서브 디렉토리를 만들 수 있습니까? C#?

Directory Tree

내가 이런 식으로 작성해야합니까 같은 이름을 가질 필요가 없다 있지만, 이와 같은 단순한 디렉토리 트리를 만들 :

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

동일한 문자열 경로에 "Pepe"와 "Juan"을 만드는 옵션이 있습니까?

+6

아니요.하지만 가지고있는 방식에 어떤 문제가 있습니까? –

+0

디렉토리를 만들 때마다 CreateDirectory 메서드를 사용해야합니다. 끝내지는 않았지만 문제는 무엇입니까? – LONG

+0

편리하지 않은 경우 디렉토리 배열을 문자열로 사용하는 정적 메서드를 만들어 편리 방법으로 사용하십시오. 즉. 'public static void CreateDirs (params string [] dirPaths) {/ * 배열 오버 루프와 디렉토리 생성 * /}' – Igor

답변

2

아니요. 그렇게하기 위해 BCL에 구운 것이 없습니다. 모든 사람에게 CreateDirectory으로 전화해야합니다.

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

답변을 게시하려면 당신은 다음 CreateDirectory 방법의 사용을 원한다면, 대안을 제공합니다

당신이 디렉토리 경로의 모음이있는 경우, 당신은 루프 내에서 그 넣을 수 있습니다 메서드를 호출 할 때 params string[] 매개 변수를 사용하고 거기에있는 디렉터리를 전달하는 메서드를 사용할 수 있습니다.

코드는

CreateDirectories(new [] { "/home/XXX/Documents/Users/Pepe/datos/", "/home/XXX/Documents/Users/Juan"}); 

나는의 사용을 줄일 수 있도록

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"); 

로 호출 할 수 있습니다 또는 당신은 문자열 배열에 전달할 수 있습니다 같을 것이다 위의 작업을 수행하는 System.IO 메서드를 사용하면 클래스를 인터페이스하여 mock을 만든 다음 U I/O 작업을 수행하지 않고 생성 한 소프트웨어를 테스트하여 정적이 아닌 것을 제외하고는 위의 시나리오를 사용할 수있는 시나리오를 제공합니다.

/home/XXX/Documents/Users 

당신이 거기에서 하위 디렉토리를 추가 할 : 당신이 공통 루트 디렉토리를 가지고있는 것처럼

1

는 소리가 난다. 그 경우이며, 목표는 하위 디렉토리를 참조해야하는 경우, 그때 @ ColinM의 접근 방식으로 갈 것입니다 만, 다음과 같이 약간을 수정하는 경우 : 지금 당신은, 당신을 호출 할 때

private static void CreateDirectories(string directoryRoot, params string[] directories) 
{ 
    foreach (string directory in directories) 
    { 
     Directory.CreateDirectory(Path.Combine(directoryRoot, directory)); 
    } 
} 

을 단지 좋은 점에 대해 Path.Combine 당신이 중 하나를 directories --it의에서 directoryRoot 대열 또는 선도 슬래시 /을 문제에 대해 걱정할 필요가 없다는 것입니다

CreateDirectories("/home/XXX/Documents/Users", "Pepe/datos/", "Juan"); 

일단 루트를 언급 할 필요가 결국 형식이 올바르게 지정되었는지 확인합니다.

물론이 접근법을 사용하면 directories이 null 인 경우 어떻게되는지 결정해야합니다. directoryRoot를 만들지 (아직 없다고 가정), 오류를 던지거나 할 수 있습니까? 너 그냥 돌아온거야?

0

같이 만들 수 있습니다.

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

c : 드라이브의 루트에는 Dir1이 없다고 생각하십시오.

Dir1 -> Dir2 -> Dir3과 같은 폴더 구조가 생성됩니다.

Die1이 있으면 나머지 하위 디렉토리가 생성됩니다.

다단계와 동일합니다.