c# - Directory.GetFiles() 不适用于 "."模式

标签 c# .net directory

当我将以下行添加到我的 WPF 应用程序时,我遇到了一些奇怪的问题。

private void button1_Click(object sender, RoutedEventArgs e)
{

    foreach(string files in Directory.GetFiles(path,".",SearchOption.TopDirectoryOnly))
      tb_FileBrowse.Text = files;

}

问题是,在 FrameWork 3.5 中,上述方法什么都不做,甚至没有错误,但是如果我将其更改为 FrameWork 4.5 有用!。另外,如果我使用的是 Framework 3.5 并将其更改为 ConsolApp,就像这样

foreach (string files in Directory.GetFiles(path, ".", SearchOption.TopDirectoryOnly))
{
   Console.WriteLine("{0}",files);
}

代码给出了一些结果。

有没有人遇到同样的问题?

最佳答案

我试过了,得到了同样的结果。使用 Resharper 深入研究 API 源代码会发现 .NET 3.5 和 4.5 版本的 Directory.GetFiles 完全不同。

特别是 .NET 4.5 版本包含此函数(而 .NET 3.5 不包含):

private static string NormalizeSearchPattern(string searchPattern)
{
  string searchPattern1 = searchPattern.TrimEnd(Path.TrimEndChars);
  if (searchPattern1.Equals("."))
    searchPattern1 = "*";
  Path.CheckSearchPattern(searchPattern1);
  return searchPattern1;
}

这解释了为什么搜索模式为“.”适用于 .NET 4.5,但不适用于 3.5。

为了兼容性,您应该使用“*”或“*.*”。

关于c# - Directory.GetFiles() 不适用于 "."模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14915473/

相关文章:

c# - 用英文月份填充组合框

c++ - Windows 上文件路径中的特殊字符 (c++)

php - 在网站结构中找到 "orphan"文件

c# - 您将如何许可您的 Mono 代码?

c# - Dataadaptor 不返回任何值,也没有异常

c# - 触发 OnPropertyChanged 的​​更好方法

c++ - Makefile 没有找到目标文件

c# - 字典 : An item with the same key has already been added

.net - SQL Server 连接池不检测关闭的连接?

c# - 我应该在 TCP 传输中手动嵌入数据大小信息吗?