4

「ルート」フォルダーのサブディレクトリからファイルを取得することはできましたが、これらのサブディレクトリのディレクトリ2からもファイルを取得したくありません。

例: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);
}

アイデアは、最初にサブディレクトリの第 1 レベルを選択し、次にEnumerable.SelectManyメソッドを使用してすべてのファイルを「集約」することです。

于 2012-12-19T13:45:24.193 に答える
3

最初のものは、現在のディレクトリとすべてのサブディレクトリからファイルを取得することを意味するため、に変更SearchOption.AllDirectoriesする必要があります。SearchOption.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 に答える