もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
Grepみたいな機能を作るために、指定した拡張子のファイルを、指定のフォルダの中から、子フォルダの中も含めて検索するような機能をつくりたい。
やりかた
DirectoryInfo
クラスのGetFiles()
とGetDirectories()
を使う。
サンプルコード
using Microsoft.UI.Xaml; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; namespace FileVerUpTool { public sealed partial class MainWindow : Window { string targetExt = "*.csproj"; string targetDir = @"C:\Users\masa\source\repos\FlyoutableToggleButtonJikken"; List<string> foundList = new(); public MainWindow() => this.InitializeComponent(); void SearchFiles(string target) { var parentDir = new DirectoryInfo(target); var files = parentDir.GetFiles(targetExt); // その階層にある対象ファイルをリストに入れる files.ToList().ForEach(x=> foundList.Add(x.FullName)); // その階層にあるフォルダを探し、 var childDirs = parentDir.GetDirectories(); // フォルダの中を探しに行く(再帰的に) foreach (var dir in childDirs) { SearchFiles(dir.FullName); } } private void myButton_Click(object sender, RoutedEventArgs e) { // csprojを探す SearchFiles(targetDir); // 見つかった奴を表示する foundList.ForEach(x => Debug.WriteLine(x)); } } }
参考
ある文字列を含むすべてのファイルを検索する