4

我已经设法从“根”文件夹子目录中获取文件,但我也从这些子目录目录中获取文件,这是我不想要的。

例子:RootDirectory>Subdirectories (wanted files)>directories2 (unwanted files)

我用过这段代码:

public void ReadDirectoryContent() 
{
  var s1 = Directory.GetFiles(RootDirectory, "*", SearchOption.AllDirectories);
  {
  for (int i = 0; i <= s1.Length - 1; i++)
  FileInfo f = new FileInfo(s1[i]); 
  . . . etc
  }
}
4

2 回答 2

6

试试这个 :

var filesInDirectSubDirs = Directory.GetDirectories(RootDirectory)
    .SelectMany(d=>Directory.GetFiles(d));

foreach(var file in filesInDirectSubDirs)
{
    // Do something with the file
    var fi = new FileInfo(file);
    ProcessFile(fi);
}

这个想法是首先选择第一级子目录,然后使用Enumerable.SelectMany方法“聚合”所有文件

于 2012-12-19T13:45:24.193 回答
3

您必须更改SearchOption.AllDirectoriesSearchOption.TopDirectoryOnly,因为第一个意味着它从当前目录和所有子目录中获取文件。

编辑:

op 想要在直接子子目录中搜索,而不是根目录。

public void ReadDirectoryContent() 
{
    var subdirectories = Directory.GetDirectories(RootDirectory);
    List<string> files = new List<string>();

    for(int i = 0; i < subdirectories.Length; i++)
       files.Concat(Directory.GetFiles(subdirectories[i], "*", SearchOption.TopDirectoryOnly));
}
于 2012-12-19T13:45:09.007 回答