(1) C#でファイルの存在チェックを行う方法
(1-1) 構文
(1-2) サンプルプログラム
(1) C#でファイルの存在チェックを行う方法
(1-1) 構文
(構文)
- if (!File.Exists([ファイルパス]))
- {
- //[存在しない場合の処理];
- }
- else
- {
- //[存在する場合の処理];
- }
(説明)
FileクラスのExistメソッドを使う事で、ファイルの存在チェックができます。結果がboolean型で返ってくるので、結果に応じて「存在する場合」の処理(構文ではelse文)と「存在しない場合」の例外処理(構文ではif文)を記述していきます。
(1-2) サンプルプログラム
(サンプルプログラム)
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace FileExistanceCheck
- {
- class Class1
- {
- static void Main(string[] args)
- {
- try
- {
- //##(1)最初の引数(ファイルパス)を取得
- //## ・argsの前の「@」は文字列のエスケープ処理をせずに済むための接頭辞
- //## ・Trim()メソッドで先頭と末尾のスペースを削除
- string inputFileName = @args[0].Trim();
- //##(2)FileクラスのExistメソッドで指定パスのファイル存在チェック
- //## ⇒もし存在しない場合はエラーメッセージを出力
- if (!File.Exists(inputFileName))
- {
- Console.WriteLine("Error : {0} file does not exist", inputFileName);
- }
- //## ⇒もし存在する場合はファイルを開く
- else
- {
- File.Open(inputFileName, FileMode.Open);
- }
- }
- //##(3)IOException例:ファイルパスが存在しないなど
- catch (IOException e1)
- {
- Console.WriteLine("IOException: "+e1.Message);
- }
- //##(4)引数のインデックスが範囲外になるケースなど
- catch (IndexOutOfRangeException e2)
- {
- Console.WriteLine("IndexOutOfRangeException: " + e2.Message);
- }
- catch (Exception e3)
- {
- Console.WriteLine(e3.Message);
- }
- }
- }
- }
(補足)
・「@」についてもう少し詳細に知りたい方は別記事「C#で文字列の前に付いてるアットマーク「@」について」をご参照ください。
・引数を与える画面の開き方については別記事「C#のコンソールアプリで引数を与えて実行する方法」をご参照ください。
(図121)実行結果:正常終了
プロジェクトの引数には存在するファイルを指定して実行するとelse文に入る
(図122)実行結果:IndexOutOfRangeException
引数には存在するファイルを指定し、引数を取り出す際のインデックスに存在しない値を指定するとIndexOutOfRangeExceptionが発生。