Directory.GetFiles searchOption重载不起作用

时间:2015-11-20 19:56:31

标签: c# .net

对于初学者来说,请注意我是C#,StackOverflow和一般编程的新手。我在Directory.GetFiles中遇到System.IO方法时遇到问题。我的所有代码都工作,除了searchOption重载。这是我目前的代码。

string[] files = Directory.GetFiles(path:"C:/example", searchPattern:"*.txt");

foreach(string name in files) { Console.WriteLine(name); }

我遇到了麻烦,因为我希望代码段能够搜索目录'例如'及其所有子目录。我已经阅读here它应该看起来像SearchOption.AllDirectories,但是当我在Visual Studio(Professional 2015)中尝试时,IntelliSense会提取看起来更像{{ {1}},我无法弄清楚如何将searchOption:参数放入此重载中。我做的任何事都会导致以下错误之一。

  

我尝试了什么(以上代码中的一个作为第三个重载):

     

System.IO.SearchOption.AllDirectories - 命名参数规范必须在指定了所有固定参数后出现。

     

searchOption:AllDirectories - 名称' AllDirectories'在当前背景下不存在。

     

searchOption:" AllDirectories" - 无法转换为' string'到' System.IO.SearchOption'。

等等。我已经在MSDN,Google,StackOverflow,codeproject和其他方面对该主题进行了至少3个小时的研究,但我仍然无法找到答案。

2 个答案:

答案 0 :(得分:1)

请改为尝试:

string[] files = Directory.EnumerateFiles(stage_path,"*.txt",SearchOption.AllDirectories).ToArray();

答案 1 :(得分:1)

方法调用中参数标签searchPattern:的原因是由命名参数引起的,这些参数是在C#4.0中引入的

如果按照所述顺序传递所有参数,则不需要包含标签。

Directory.GetFiles("C:/example", "*.txt", SearchOption.AllDirectories);应该产生你想要的东西。