2013-06-19 2 views
2

어쩌면 이것은 의도적으로 설계된 것이지만 이미 해당 정보가 있어도 루트 디렉토리에 C : \가 있어야합니다.DirectoryInfo [] SearchOption.AllDirectories에 루트 디렉토리가 포함되어 있지 않습니까?

DirectoryInfo Dinfo = new DirectoryInfo(@"C:\"); 
DirectoryInfo[] directories = Dinfo .GetDirectories("*.*", SearchOption.AllDirectories); 

그래서 당신이 얻을 어떻게 디렉토리는 C "@ 포함합니다 : \

+1

참고로, 그것으로 설계된에 대한 문서에서 [ DirectoryInfo.GetDirectories()] (http://msdn.microsoft.com/en-us/library/s7xk2b58%28v=vs.100%29.aspx/html) : _ "현재 디렉터리의 하위 디렉터리를 반환합니다. 하위 디렉토리가 없으면이 메소드는 빈 배열을 반환합니다. "@ –

+0

@ GrantWinney 제 생각에는 바보 같은 디자인입니다. –

+2

@Mike : 재귀 적으로 자식을 검색하는 메소드에는 부모가 포함되어 있어야합니까? 이미 부모가 있으므로 아무 문제가 없습니다. 원하는 경우 직접 포함 시키십시오. 포함시키지 않으려는 항목을 제거하는 것이 더 어렵고 덜 효율적입니다. –

답변

3

당신은 Concat로를 추가 할 수 있습니다.

DirectoryInfo[] directories = new[]{Dinfo} 
    .Concat(Dinfo.EnumerateDirectories("*.*", SearchOption.AllDirectories)) 
    .ToArray();