主なタスクの一部として、指定された名前のディレクトリのディレクトリとそのサブディレクトリを検索し、指定されたディレクトリ名で終了する各ファイルパスを文字列配列に保存する必要があるソフトウェアツールを作成しています。例えば:
level_1 level_2 Level_3 ルートディレクトリ ---> フォルダ A ---> フォルダ D ---> フォルダ F ---> ターゲット | | |---> フォルダ E ---> ターゲット | | |---> フォルダ B ---> ターゲット | | |---> FolderC ---> ターゲット
ポンプアウトする必要があります:
string[] = {RootDirectory\folderA\FolderD\folderF\Target,
RootDirectory\folderA\folderE\Target,
Rootdirectory\folderB\Target,
RootDirectory\foderC\Target}
もともとgetDirectories(myPath, "Target", SearchOption.AllDirectories)
ディレクトリ情報オブジェクトで使用していましたが、問題がありました。何らかの理由で、フォルダー b と c の下、さらにフォルダー A>フォルダー D>フォルダー F の下にターゲットが見つかりますが、フォルダー E はスキップされます。サブディレクトリ folderA 内で最初に見つかった場合は、level_1 の次のフォルダーに進みます。この例のように、私の実際のケースでは、folderD は実際には folderE の前にアルファベット順にソートされていたことに言及する必要があります。
その代わりにIEnumerator
、指定されたディレクトリ名で終了するファイルを選択するために where フィルターを使用して実行することにしました。これで全員見つかりました。getDirectories().Where(x=>(x.attributes & fileattributes.hidden)==0);
ただし、のようなことを行う方法がわかりませんIEnumerator
。
問題は、プロセスが大幅に遅くなるため、非表示の SVN ディレクトリをスキップする必要があることです。
ここに私の質問があります。特定のディレクトリ名で終わるサブディレクトリ内のすべてのパスのコレクションを取得し、隠しファイルを検索から除外するにはどうすればよいですか?