C#のファイル操作で発生する例外のメモ

自分向けのメモ。耄碌したのか同じことを何回も調べてたのでまとめ。

ファイル操作

存在する or 存在しないファイルに対してメソッドを実行したときの挙動

メソッド名 結果 メッセージ
File.Copy sourceFileName : FileNotFoundException ファイル '${0}' が見つかりませんでした。
destFileName : IOException ファイル '${0}' は既に存在します(ただしoverrideフラグを指定すれば出ない)
File.Delete 何も起きない
File.Exists 必ずfalse

フォルダ操作

存在する or 存在しないフォルダに対してメソッドを実行したときの挙動

メソッド名 結果 メッセージ
Dicectory.CreateDirectory 何も起きない (*1)
Dicectory.Delete 存在しない場合 DirectoryNotFoundException が発生
Directory.Exists 必ずfalse

(*1) パスが正しければ中間フォルダを含めて作成される

(*2) 存在確認が必要ならあらかじめExistsする必要あり

DirecotryクラスにはCopyが存在しない。

まとめ

  • Existsは例外が出ない。例外が出そうなときはfalseになる
  • Deleteは対象がファイルとフォルダで挙動が違う