C#でディレクトリ(フォルダー)が存在するかどうか(参照できるかどうか)を確認する方法について紹介します。
ディレクトリの存在確認には、System.IO名前空間のDirectoryInfoクラスのExistsプロパティを使用するか、DirectoryクラスのExists静的メソッドを使用します。
目次
DirectoryInfoクラスのExistsプロパティで存在確認
DirectoryInfoクラスのExistsプロパティの構文は次のようになります。
1 |
public bool Exists { get; } |
DirectoryInfo.Existsプロパティの使用例
以下にExistsプロパティの使用例を示します。
1 2 3 4 5 6 |
// ディレクトリパス string path = @"C:\Test\NewDir"; // DirectoryInfoのインスタンスを生成する DirectoryInfo di = new DirectoryInfo(path); // ディレクトリが存在するかどうかを確認する bool isExists = di.Exists; |
上記の例では以下の記事「ディレクトリ(フォルダー)を作成する」で作成するディレクトリのC:\Test\NewDirディレクトリが存在するかどうかを確認しています。
Existsプロパティは、ディレクトリが存在する場合はtrueを返し、存在しない場合はfalseを返します。
DirectoryクラスのExists静的メソッドで存在確認
DirectoryクラスのExists静的メソッドの構文は次のようになります。
1 |
public static bool Exists (string path); |
DirectoryクラスのExists静的メソッドには引数に存在を確認するディレクトリのパスを指定します。
Directory.Exists静的メソッドの使用例
以下にExists静的メソッドの使用例を示します。
1 2 3 4 |
// ディレクトリパス string path = @"C:\Test\NewDir"; // ディレクトリが存在するかどうかを確認する Directory.Exists(path); |
DirectoryInfoクラスのExistsプロパティ、およびDirectoryクラスのExists静的メソッドは、指定したディレクトリが存在するかどうかを判断しようとした際に、エラーが発生した場合もfalseを返します。
サンプルプログラム
Windowsフォームアプリケーションでのプログラムの実装例を記載します。
ユーザーインターフェース
フォームのインターフェースは次のようにします。
ソースコード
サンプルプログラムのフォームには次のようなソースコードを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
using System; using System.Windows.Forms; // System.IOのusingを追加 using System.IO; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // DirectoryInfoクラスのExistsプロパティで確認 private void button1_Click(object sender, EventArgs e) { try { // ディレクトリパス string path = textBox1.Text; // DirectoryInfoのインスタンスを生成 DirectoryInfo di = new DirectoryInfo(path); // ディレクトリの存在を確認 bool isExists = di.Exists; // 確認メッセージを表示 if (isExists) { MessageBox.Show($"{path}が見つかりました。"); } else { MessageBox.Show($"{path}は見つかりませんでした。"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } // DirectoryクラスのExists静的メソッドで確認 private void button2_Click(object sender, EventArgs e) { try { // ディレクトリパス string path = textBox1.Text; // ディレクトリの存在を確認 bool isExists = Directory.Exists(path); // 確認メッセージを表示 if (isExists) { MessageBox.Show($"{path}が見つかりました。"); } else { MessageBox.Show($"{path}は見つかりませんでした。"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } |
サンプルの実行
作成したプログラムを実行します。
[button1]がDirectoryInfoクラスのExistsプロパティでDirectoryInfoオブジェクトのディレクトリが存在するかどうかを確認します。
[button2]がDirectoryクラスのExists静的メソッドで指定したパスのディレクトリが存在するかどうかを確認します。
DドライブにWork > ExistsDirectorySample > TestDirの順にディレクトリを作成します。
パスのテキストボックスに「D:\Work\ExistsDirectorySample\TestDir」を入力します。
[button1]をクリックします。
ディレクトリが存在しているのでExistsプロパティがtrueになります。
[button2]をクリックします。
同様にディレクトリが存在しているのでExists静的メソッドはtrueを返します。
パスのテキストボックスに存在しないディレクトリのパスを入力します。
ここではTestDirディレクトリ内の存在しないNotFoundディレクトリのパスを入力しています。
[button1]をクリックします。
ディレクトリが存在していないのでExistsプロパティはfalseになります。
[button2]をクリックします。
同様にディレクトリが存在していないのでExists静的メソッドはfalseを返します。