2013-11-22 2 views
0

을 호출하는 DirectoryInfo 개체가 있습니다.DirectoryInfo.GetDirectories 및 EnumerateDirectories가 물음표를 올바르게 처리하지 못합니다.

MSDN에 따르면이 이름에 정확히 3자를 가진 모든 디렉토리를 반환해야합니다.

이 디렉토리에는 5 개의 하위 디렉토리가 있습니다. 4 개 중 3 개는 1 개이고 나머지 1 개는 2 개입니다. 이것은 계속해서 5 개 모두를 반환합니다. 이것은 .NET의 버그입니까?

DirectoryInfo diBase = new DirectoryInfo(sProcessedPath); 
DirectoryInfo[] diBaseDirList = diBase.GetDirectories("???"); 
foreach(DirectoryInfo diBaseDirItem in diBaseDirList)... 

또한 당신이 파워 쉘에있는 경우 전화를 걸 알게 디렉토리 (은 Get-ChildItem을)를 ??? 적절한 하위 폴더 목록을 반환합니다. 하지만 표준 명령 프롬프트 디렉토리에 ??? 도끼 폴더를 반환합니다.

+0

코드를 공유하십시오. –

+0

이 코드는 예상대로 작동합니다. – varocarbas

+0

@varocarbas 현재 사용중인 .net 버전은 무엇입니까? – dko

답변

0

그래서 나는 이것에 대한 답을 찾았습니다. 프로그램 내에서 powershell을 호출하면 올바르게 해결됩니다. 3 개의 물음표 = 3 자.

System.Management.Automation.PowerShell ps = System.Management.Automation.PowerShell.Create(); 
ps.AddCommand("Get-ChildItem"); 
ps.AddParameter("Path", sProcessedPath); 
ps.AddParameter("Include", "???"); 
foreach (System.Management.Automation.PSObject result in ps.Invoke()) 
{ 
    Console.WriteLine(result.Members["Name"].Value); 
} 

이것은 ax 디렉토리 이름을 인쇄하지 않습니다. 따라서 Microsoft는 powershell에서 버그를 수정했습니다.

+1

오해의 여지가 없습니다. 버그는 없습니다. GetFiles/GetDirectories에서 어떻게 수행되는지. 이 코드는 System.IO.Directory와 아무 관련이 없으므로 질문에 대한 직접적인 대답이 아닙니다. 진정으로 다른 사람들을 돕기 위해 제목/설명/답변을 업데이트하십시오. – varocarbas

+0

MSDN에 따르면 Directory 및 DirectoryInfo의 Get/Enumerate Files/Directories 메서드는 모두 그렇게 말하고 있습니까? "그 위치에 0 또는 한 문자가 있습니다." "해당 위치에 정확히 한 글자"라는 Directory.EnumerateDirectories 제외. 이것은 혼동의 원인 일 수 있습니다! (또한 DirectoryInfo.GetFiles는 "0 또는 1 문자"와 정확히 "0 또는 1 문자"를 읽습니다.) – CanisLupus

관련 문제