4

みなさん、こんにちは、私は現在、この呼び出しで必要なサブディレクトリを取得しています:

foreach (DirectoryInfo dir in parent)
      {
        try
        {
          subDirectories = dir.GetDirectories().Where(d => d.Exists == true).ToArray();
        }
        catch(UnauthorizedAccessException e)
        {
          Console.WriteLine(e.Message);
        }
        foreach (DirectoryInfo subdir in subDirectories)
        {
          Console.WriteLine(subdir);
          var temp = new List<DirectoryInfo>();
          temp = subdir.GetDirectories("*", SearchOption.AllDirectories).Where(d => reg.IsMatch(d.Name)).Where((d => !d.FullName.EndsWith("TESTS"))).Where(d => !(d.GetDirectories().Length == 0 && d.GetFiles().Length == 0)).Where(d => d.GetFiles().Length > 3).ToList();
          candidates.AddRange(temp);
        }
      }

      foreach(DirectoryInfo dir in candidates)
      {
        Console.WriteLine(dir);
      }

だから今私の問題は、tryブロックのサブディレクトリフォルダーにあるlost+foundというフォルダーの1つが原因でアクセスの問題が発生したため、候補者と呼ばれる最終リストが何も得られないことです。私はtryとcatchを使用して例外を処理しようとしましたが、チェックを続けることができました.考え?フォルダー名を含むフォルダーを無視するために.whereを使用してフィルターを実行しようとしましたが、フォルダー名でプログラムを停止しただけで機能しませんでした。

4

2 に答える 2

1

Microsoft が説明するように、再帰を使用できます: link

于 2016-05-25T15:57:02.743 に答える