.NET TIPS ファイルやディレクトリをすべてのサブディレクトリから検索するには?[2.0のみ、C#、VB]デジタルアドバンテージ 遠藤 孝信2007/01/26 |
|
|
「TIPS:ファイルやディレクトリの一覧を取得するには?」では、指定したディレクトリにあるファイル/ディレクトリを返すメソッドとして、以下の2つのクラス(いずれもSystem.IO名前空間)のメソッドを紹介した(カッコ内は指定可能なパラメータの意味)。
■Directoryクラスのメソッド
GetFiles(対象ディレクトリ)
GetFiles(対象ディレクトリ, 検索パターン)
GetDirectories(対象ディレクトリ)
GetDirectories(対象ディレクトリ, 検索パターン)
■DirectoryInfoクラスのメソッド
GetFiles()
GetFiles(検索パターン)
GetDirectories()
GetDirectories(検索パターン)
これらに加えて.NET Framework 2.0では、パラメータとしてSearchOption列挙体(System.IO名前空間)の値を指定する、以下のようなメソッドが追加されている。
■Directoryクラスに追加されたメソッド
GetFiles(対象ディレクトリ, 検索パターン, SearchOption列挙体の値)
GetDirectories(対象ディレクトリ, 検索パターン, SearchOption列挙体の値)
■DirectoryInfoクラスに追加されたメソッド
GetFiles(検索パターン, SearchOption列挙体の値)
GetDirectories(検索パターン, SearchOption列挙体の値)
SearchOption列挙体(System.IO名前空間)では次の2つの値が定義されている。
| ||||||
SearchOption列挙体で定義されている値 | ||||||
このように、GetFilesメソッドやGetDirectoriesメソッドでパラメータとして「SearchOption.AllDirectories」を指定するだけで、指定したディレクトリだけでなく、その配下のすべてのサブディレクトリから検索パターンにマッチしたファイルやディレクトリを検索できるようになった。
前掲のTIPSの最後では、指定したディレクトリから指定した検索パターンのファイルを再帰的に検索するサンプル・プログラム「findfile.cs」を示しているが、本稿で紹介した新しいメソッドを使うと、次のようにメソッドを一度呼び出すだけで済む。
| |
ファイルの検索を行うC#のサンプル・プログラム(findfile2.cs) | |
| |
ファイルの検索を行うVBのサンプル・プログラム(findfile2.vb) | |
すべてのファイルの検索が完了するまで結果が表示されないという挙動の違いはあるが、こちらのバージョンでは再帰呼び出しが行われないのでスタック・オーバーフローの心配はない。
利用可能バージョン:.NET Framework 2.0のみ カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル 使用ライブラリ:Directoryクラス(System.IO名前空間) 使用ライブラリ:DirectoryInfoクラス(System.IO名前空間) 使用ライブラリ:SearchOption列挙体(System.IO名前空間) 関連TIPS:ファイルやディレクトリの一覧を取得するには? |
|
「.NET TIPS」 |
Insider.NET フォーラム 新着記事
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|