2013-11-22 36 views
0

我有一个DirectoryInfo对象,我打电话给GetDirectories("???")DirectoryInfo.GetDirectories和EnumerateDirectories不正确处理问号

根据MSDN应该返回名称中包含3个字符的所有目录。

在这个目录中,我有5个子目录。其中4个有3个字符,1个有两个。这是不断返回所有5个。这是.NET中的错误吗?

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

而且我发现,如果你是在PowerShell和调用DIR(GET-ChildItem)???它会返回子文件夹的正确列表。但在标准命令提示符下,dir?也正在返回斧头文件夹。

+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目录名称。所以显然微软在PowerShell中修复了它们的bug。

+1

你不能这么误导。没有错误;只是在GetFiles/GetDirectories中做了些什么。此代码与System.IO.Directory无关,因此不是您的问题的直接答案。请更新您的标题/描述/答案以真正帮助他人。 – varocarbas

+0

根据MSDN,目录和DirectoryInfo中的所有获取/枚举文件/目录方法说?是“在该位置零个或一个字符”。除了Directory.EnumerateDirectories,它说“在那个位置只有一个字符。”。这可能是混淆的原因! (此外,DirectoryInfo.GetFiles读取“完全为零或一个字符”,这只是“0或1”版本的不同措辞。) – CanisLupus