C#でファイル、フォルダ(ディレクトリ)の存在をチェックする方法です。超簡単です。
ファイル・フォルダの存在をチェックする
C#でファイル、もしくはフォルダ(ディレクトリ)の存在をチェックする方法は超簡単です。
結論から申し上げますと、Existsメソッドを使います。
- ファイルの場合→System.IO.File.Existsメソッド
- フォルダの場合→System.IO.Directory.Existsメソッド
ファイルとフォルダで、System.IO.FileクラスかSystem.IO.Directorクラスかの違いはありますが、Existsメソッドの機能は同じです。存在をチェックする機能です。
確認のためサンプルでこんな画面を用意しました。
左側がファイル存在チェック、右側がフォルダ存在チェックです。
仕様は、ファイル存在チェックの場合、
- 上のテキストボックスにファイルパスを入力
- ファイル存在チェックのボタンをクリック
- 下のテキストボックスにチェック結果出力:
・存在する→「ありますねえ!」
・存在しない→「ないです。」
という簡単なものです。フォルダ存在チェックも同じ仕様です。
ファイル存在チェックのサンプルコード
ファイル存在チェックの場合、System.IO.File.Existsメソッドを使用します。
File.Exists("ファイルのフルパスの文字列")
File.Existsメソッドの引数に、ファイルのフルパスの文字列を渡すだけです。
ファイル存在チェックのサンプルは以下。
//存在チェックに必要 using System; using System.IO; //ファイル存在チェック private void cmdExistsFIle_Click(object sender, EventArgs e) { //入力値チェック if(string.IsNullOrEmpty(txtFilePath.Text) == true) { txtResultFile.Text = "ファイルパスを入力してください。"; return; } ///---ファイル存在チェック START ---/// if (File.Exists(txtFilePath.Text)) { txtResultFile.Text = "(ファイルが)ありますねえ!"; } else { txtResultFile.Text = "(ファイルが)ないです。"; } ///---ファイル存在チェック END ---/// }
たったこれだけです。一応、入力値チェックも入れておきました。これを実行してみます。
ファイルが存在する場合は、以下の結果になります。
チェック結果に表示されました。
そしてファイルが存在しない場合は、次の結果になります。
こちらもチェック結果に表示されました。
ファイルパスに書いてることは気にしないで下さい。
フォルダ存在チェックのサンプルコード
フォルダ存在チェックの場合、System.IO.Directory.Existsメソッドを使用します。
Directory.Exists("フォルダのフルパスの文字列")
Directory.Existsメソッドの引数に、ファイルのフルパスの文字列を渡すだけです。
フォルダ存在チェックのサンプルは以下。
//存在チェックに必要 using System; using System.IO; private void cmdExistsDir_Click(object sender, EventArgs e) { //入力値チェック if (string.IsNullOrEmpty(txtDirPath.Text) == true) { txtResultDir.Text = "フォルダパスを入力してください。"; return; } ///---フォルダ存在チェック START ---/// if (Directory.Exists(txtDirPath.Text)) { txtResultDir.Text = "(フォルダが)ありますねえ!"; } else { txtResultDir.Text = "(フォルダが)ないです。"; } ///---フォルダ存在チェック END ---/// }
たったこれだけです。一応、入力値チェックも入れておきました。これを実行してみます。
フォルダが存在する場合は、以下の結果になります。
チェック結果に表示されました。
そしてフォルダが存在しない場合は、次の結果になります。
こちらもチェック結果に表示されました。
ファイルパスに書いてることは気にしないで下さい。
補足
サンプルでは、
if (File.Exists(txtFilePath.Text))… if (Directory.Exists(txtDirPath.Text))…
と、サラッと書いてますが、初心者のエンジニア向けにもう少し詳しくコードを書いてみます。
まず、Existsメソッドの戻り値はbool型なので、Existsメソッドを実行すると、trueかfalseで返って来ます。それを詳細に書くと、以下のロジックになります。
ファイル存在チェックの場合。
///---ファイル存在チェック START ---/// //File.Existsメソッドの場合 bool bFile = false; //Exists結果格納用変数 bFile = File.Exists(txtFilePath.Text); //Existsの戻り値はbool型なので変数に代入 //ファイルが存在する場合 if (bFile == true) { txtResultFile.Text = "(ファイルが)ありますねえ!"; } //ファイルが存在しない場合 else if (bFile == false) { txtResultFile.Text = "(ファイルが)ないです。"; } ///---ファイル存在チェック END ---///
フォルダ存在チェックの場合。
///---フォルダ存在チェック START ---/// //Directory.Existsメソッドの場合 bool bDir = false; //Exists結果格納用変数 bDir = Directory.Exists(txtDirPath.Text); //Existsの戻り値はbool型なので変数に代入 //フォルダが存在する場合 if (bDir == true) { txtResultDir.Text = "(フォルダが)ありますねえ!"; } //フォルダが存在しない場合 else if (bDir == false) { txtResultDir.Text = "(フォルダが)ないです。"; } ///---フォルダ存在チェック END ---///
少しステップ数が増えましたが、サンプルコードと同じ結果になります。
慣れてくるとわざわざ変数にExistsメソッドの結果を代入する必要はありませんが、初心者のエンジニアだったり、動きを詳細に見たい人は補足のソースコードを参考にして下さい。
参考サイト
File.Exists(String) メソッド (System.IO) | Microsoft Docs
Directory.Exists(String) メソッド (System.IO) | Microsoft Docs
.