こんにちは!エンジニアの中沢です。
C#にはファイルやフォルダ(ディレクトリ)が存在するかをチェックするための「Existsメソッド」があります。「Existsメソッド」はチェックするファイルのパスを「絶対パス」と「相対パス」のどちらでも指定して使うことができます。
また、ワイルドカードを使ってマッチするファイルがあるかどうかをチェックすることもできます。
この記事では、
- Existsメソッドとは
- Existsメソッドの使い方
- ファイルの存在チェックをする方法
- フォルダ(ディレクトリ)の存在チェックをする方法
- 相対パスで存在チェックをする方法
- ワイルドカードで存在チェックをする方法
などの基本的な内容から、応用的な使い方に関しても解説していきます。
今回はこれらの方法を覚えるために、Existsメソッドのさまざまな使い方をわかりやすく解説します!
Existsメソッドとは
Existsメソッドはファイルやフォルダが存在するかどうかを確認するために使います。Existsメソッドは指定したパスに、ファイルやフォルダが存在すれば戻り値に”true”、存在しなければ”false”を返します。
ただし、アクセス権限の無いファイルは存在しても”false”を返すので注意してください。ファイルを読み込む処理でファイルが存在しない場合には例外が発生するので、事前にExistsメソッドで存在を確認をする必要があります。
ファイルの存在を調べる場合には「System.IO.File.Exists」を使いますが、ディレクトリの場合は「System.IO.Directory.Exists」を使います。
クラスが異なるので間違えないように注意してください。
Existsメソッドの使い方
ファイルの存在チェックをする方法
Existsメソッドでファイルの存在チェックをするには、引数にチェックしたいファイルのパスを指定します。
ファイルのパスの指定は、先頭に「@」をつけて行うのが便利です。ファイルの存在チェックをする方法を次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { string filePath = @"C:samurai.txt"; if (File.Exists(filePath)) { Console.WriteLine("存在します"); } else { Console.WriteLine("存在しません"); } Console.ReadKey(); } } }
実行結果:
存在します
このプログラムでは、指定したパスにファイルが存在するため、Existsメソッドが”true”を返しています。
このようにしてファイルの存在を確認することができました!
フォルダ(ディレクトリ)の存在チェックをする方法
フォルダ(ディレクトリ)の存在チェックをするには「System.IO.Directory.Exists」を使います。
次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { string filePath = @"C:samurai"; if (Directory.Exists(filePath)) { Console.WriteLine("存在します"); } else { Console.WriteLine("存在しません"); } Console.ReadKey(); } } }
実行結果:
存在します
このプログラムでは、指定したパスにフォルダが存在するため、Existsメソッドが”true”を返しています。
このようにしてフォルダの存在を確認することができました!
相対パスで存在チェックをする方法
Existsメソッドを使って、相対パスでもファイルやフォルダの存在チェックをすることができます。相対パスで指定する方法を次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { // カレントディレクトリを変更 System.Environment.CurrentDirectory = @"C:"; string filePath = @"samuraisamurai.txt"; if (File.Exists(filePath)) { Console.WriteLine("存在します"); } else { Console.WriteLine("存在しません"); } Console.ReadKey(); } } }
実行結果:
存在します
このプログラムでは、初めにカレントディレクトリ(相対パスの元となる現在のフォルダ)を変更して、そこからの相対パスでファイルのパスを指定しています。
ワイルドカードで条件に一致するファイルをチェックをする方法
ワイルドカードを使って、条件に一致するファイルをチェックをする方法を解説します。
例えば、ワイルドカードを使えばファイル名にかかわらず、すべてのテキストファイルを取得することができます。フォルダ内のすべてのテキストファイルを取得する方法を次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { // カレントディレクトリを変更 System.Environment.CurrentDirectory = @"C:samurai"; foreach (string file in Directory.GetFiles(".", "*.txt")) { Console.WriteLine(file); } Console.ReadKey(); } } }
実行結果:
.samurai1.txt .samurai2.txt .samurai3.txt
このプログラムでは、カレントディレクトリを変更して、そのディレクトリ内のすべてのテキストファイルを取得して表示しています。
まとめ
いかがでしたか?
今回はExistsメソッドでファイルの存在チェックをする方法を解説しました。ファイルとディレクトリでExistsメソッドのクラスが異なるので注意してくださいね。
もし、Existsメソッドの使い方を忘れてしまったらこの記事を確認してください!