C#でファイルが存在するかどうか(参照できるかどうか)を確認する方法について紹介します。
ファイルの存在確認には、System.IO名前空間のFileInfoクラスのExistsプロパティを使用するか、FileクラスのExists静的メソッドを使用します。
目次
FileInfoクラスのExistsプロパティで存在確認
FileInfoクラスのExistsプロパティの構文は次のようになります。
| 1 | public bool Exists { get; } | 
FileInfo.Existsプロパティの使用例
以下にExistsプロパティの使用例を示します。
| 1 2 3 4 5 6 | // ファイルパス string path = @"C:\Test\File.txt"; // FileInfoのインスタンスを生成する FileInfo fileInfo = new FileInfo(path); // ファイルが存在するかどうかを確認する bool isExists = fileInfo.Exists; | 
Existsプロパティは、ファイルが存在する場合はtrueを返し、存在しない場合はfalseを返します。
FileクラスのExists静的メソッドで存在確認
FileクラスのExists静的メソッドの構文は次のようになります。
| 1 | public static bool Exists (string path); | 
FileクラスのExists静的メソッドの引数には、存在を確認するファイルのパスを指定します。
File.Exists静的メソッドの使用例
以下にExists静的メソッドの使用例を示します。
| 1 2 3 4 | // ファイルパス string path = @"C:\Test\File.txt"; // ファイルが存在するかどうかを確認する File.Exists(path); | 
FileInfoクラスのExistsプロパティ、およびFileクラスのExists静的メソッドは、指定したファイルが存在するかどうかを判定しようとした際に、エラーが発生した場合もfalseを返します。
サンプルプログラム
Windowsフォームアプリケーションでのプログラムの実装例を記載します。
ユーザーインターフェース
フォームのインターフェースは次のようにします。

「…」ボタン(button1)をクリックすると、ファイルを開くダイアログを表示して、ファイルパスをテキストボックス(textBox1)に設定できるようにします。
「button2」ボタンをクリックするとFileInfoクラスのExistsプロパティを参照して、テキストボックスに入力されているパスのファイルが存在するかどうかを確認して結果を表示します。
「button3」ボタンをクリックするとFileクラスのExists静的メソッドを呼び出して、テキストボックスに入力されているパスのファイルが存在するかどうかを確認して結果を表示します。
ソースコード
サンプルプログラムのフォームには次のようなソースコードを記述します。
| 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | using System; using System.Windows.Forms; // System.IOのusingを追加 using System.IO; namespace WindowsFormsApp1 {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }         // ファイルの参照         private void button1_Click(object sender, EventArgs e)         {             try             {                 // ファイルを開くダイアログボックスのインスタンスを生成                 using (OpenFileDialog dlg = new OpenFileDialog())                 {                     // テキストボックスからファイルパスを取得                     string path = textBox1.Text;                     if (!string.IsNullOrEmpty(path))                     {                         // FileInfoオブジェクトを生成                         FileInfo fileInfo = new FileInfo(path);                         // ディレクトリパスを取得                         string directoryName = fileInfo.DirectoryName;                         // ディレクトリが存在するかどうかを確認                         if (Directory.Exists(directoryName))                         {                             // ディレクトリが存在する場合は                             // ファイルを開くダイアログボックスの初期ディレクトリに設定                             dlg.InitialDirectory = directoryName;                         }                     }                     // ダイアログボックスを表示                     if (dlg.ShowDialog(this) == DialogResult.Cancel)                     {                         // キャンセル時は終了                         return;                     }                     // 指定されたファイルパスをテキストボックスに設定                     textBox1.Text = dlg.FileName;                 }             }             catch (Exception ex)             {                 MessageBox.Show(ex.Message);             }         }         // FileInfoクラスのExistsプロパティでファイルの存在確認         private void button2_Click(object sender, EventArgs e)         {             try             {                 // ファイルパス                 string path = textBox1.Text;                 // FileInfoのインスタンスを生成                 FileInfo fileInfo = new FileInfo(path);                 // ファイルの存在を確認                 bool isExists = fileInfo.Exists;                 // 確認メッセージを表示                 if (isExists)                 {                     MessageBox.Show($"{path}が見つかりました。");                 }                 else                 {                     MessageBox.Show($"{path}は見つかりませんでした。");                 }             }             catch (Exception ex)             {                 MessageBox.Show(ex.Message);             }         }         // FileクラスのExists静的メソッドでファイルの存在確認         private void button3_Click(object sender, EventArgs e)         {             try             {                 // ファイルパス                 string path = textBox1.Text;                 // ファイルの存在を確認                 bool isExists = File.Exists(path);                 // 確認メッセージを表示                 if (isExists)                 {                     MessageBox.Show($"{path}が見つかりました。");                 }                 else                 {                     MessageBox.Show($"{path}は見つかりませんでした。");                 }             }             catch (Exception ex)             {                 MessageBox.Show(ex.Message);             }         }     } } | 
サンプルの実行
作成したプログラムを実行します。

「C:\Test」フォルダーに「ExistsFile.txt」ファイルを作成します。

ファイルパスのテキストボックスに「C:\Test\ExistsFile.txt」を入力するか、「…」ボタンをクリックして、ファイルを開くダイアログボックスを表示して「ExistsFile.txt」ファイルを選択します。

「button2」または「button3」をクリックします。

ファイルが存在するメッセージが表示されます。
ファイルパスのテキストボックスに存在しないファイルパス(例: C:\Test\NotExistsFile.txt)を入力して「button2」または「button3」をクリックします。

ファイルが存在しないメッセージが表示されます。
