2008-10-30 2 views
11

유효한 폴더 (드라이브 루트 제외)를 가리키는 DirectoryInfo 클래스의 인스턴스에서 DirectoryInfo.GetDirectories(".")을 호출하면 결과는 자신의 것과 같은 이름의 잘못된 디렉토리를 가리키는 첫 번째 (그리고 유일한) 요소를 가리키는 DirectoryInfo 배열입니다 .DirectoryInfo.GetDirectories (string searchPattern)의 버그입니까?

static void Main(string[] args) 
{ 
    DirectoryInfo di = new DirectoryInfo("c:\\temp"); 
    DirectoryInfo[] dis = di.GetDirectories("."); 
    Console.WriteLine(dis[0].FullName); 
} 

인쇄합니다 존재하지 않는 디렉토리 : "."

c:\temp\temp 

내가 이해 윈도우에서는, 그 예를 들어

현재 디렉토리를 나타냅니다. 메서드에서 "c : \ temp"를 반환하지만 동일한 이름의 가짜 하위 디렉토리를 반환하면 절대적으로 잘못된 동작처럼 보일 수 있습니다.

이 함수에서 반환 된 모든 DirectoryInfo 객체가 실제로 존재한다는 것을 주장 할 수 있어야합니다.

나는 .NET 리플렉터를 사용하여 클래스를 디 컴파일,하지만 짐승이고 나는 내 머리에 로직을 걷는 기분이 안이 방법

internal static string[] InternalGetFileDirectoryNames(string path, string userPathOriginal, string searchPattern, bool includeFiles, bool includeDirs, SearchOption searchOption)" 

에 연결됩니다. 분명히 IMHO 버그입니다.

FYI - a "*"는 누군가가 묻기 전에 예상대로 작동합니다.

+0

재미있는 ..하지만합니다. – Greg

+0

당신은 좋은 지적입니다. 그러나, 항상 "이런 식으로되어있는"것들 중 하나가 아니며 모든 사람들은 항상 그것을 걸러냅니다. 그리고 .. 디렉토리 목록? – ScottCher

+1

DOS에서 @ScottCher를 "dir"하면됩니다. 디렉토리에 존재하지 않는 결과가 없습니다. 나는 단지 "." 및 ".."(둘 다 존재) – TheSoftwareJedi

답변

8

당신이 말한 것을 확인할 수 있고 이에 대한 합리적인 설명을 볼 수 없으므로 BUG으로 투표하고 있습니다. 나뿐만 아니라 그렇게 생각

, I submitted it 마이크로 소프트

도움이 언급 것을