【C#】ファイル~が見つかりませんでした。の解決方法【FileNotFoundException】
C#で発生するエラー(例外)
System.IO.FileNotFoundException: ファイル ~ が見つかりませんでした。
上記のエラー(例外)が発生したときの解決方法をご紹介します。
下記にC#で発生する例外処理の一覧をまとめていますので解決できない場合は合わせてご確認ください。
⇒例外処理クラス一覧まとめ【原因と解決方法】
C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選
C# ファイル ~ が見つかりませんでした。のエラーの原因
「System.IO.FileNotFoundException: ファイル ~ が見つかりませんでした。」
のエラーの原因は
指定されたパス名で示されるファイルが存在しない
からです。
エラーコードの例は下記の通りです。
string filePath = "/Sample.txt"; // 存在しないファイル
StreamReader sr = new System.IO.StreamReader(filePath);// 存在しないファイルパスでインスタンスを生成したためエラーとなる
string file = sr.ReadToEnd();
上記はテキストファイルに存在する文字列を取得するプログラムです。
しかし、2行目のStreamReaderオブジェクトのインスタンス生成時に、引数(filePath)のファイルパスが存在しないためエラーが発生します。
※ReadToEnd()メソッドは、テキストファイルの文字列を現在位置から末尾までの全ての文字を読み込みます。
「System.IO.FileNotFoundException: 」の詳細はこちらから
C# ファイル ~ が見つかりませんでした。エラーの解決方法
「System.IO.FileNotFoundException: ファイル ~ が見つかりませんでした。」のエラーを解決する方法をご紹介します。
①存在するファイルパスを指定する
string filePath = "C:/Users/user/Desktop/test.txt"; // 存在するパス
StreamReader sr = new System.IO.StreamReader(filePath);//エラーが解消される
string file = sr.ReadToEnd();
上記のように存在するファイルパスをStreamReader()の引数に渡すとエラーが解消されます。
②try~catch()でファイルが見つからない時にエラーをキャッチする
string filePath = "/Sample"; // 存在しないパス
try
{
StreamReader sr = new System.IO.StreamReader(filePath);
string file = sr.ReadToEnd();
}
catch (FileNotFoundException ex)
{
// 失敗したときの処理
System.Console.WriteLine("ファイルが見つかりませんでした。ファイルが消去されていないか確認してください");
}
StreamReaderオブジェクトのインスタンス生成の処理をtry~catch()内に記載。
エラーを回避でき、プログラムの処理が止まることが無くなります。
以上、上記二つが「System.IO.FileNotFoundException: ファイル ~ が見つかりませんでした。」の解決策です。
より良いコードを書くために
おすすめの対処法を2つ紹介しましたが、エラーを解決するために
②try~catch()でファイルが存在しない時にエラーをキャッチする
を実装しましょう。
①の対応策だと、別の処理でファイルパスの文字列が更新されると、エラーが発生します。
注意してください。大規模なシステム開発などでバグが発生しやすい「変更に弱いコード」です。
②の対応策だと、別の処理で変数が別の文字列に更新されても、エラーが発生しません。
実際の開発現場だと、このようなファイル操作の処理で、エラーが発生する場合が圧倒的に多いです。
そのため、ファイル操作の処理を記載するときは、「エラーが発生する前提」で、
今回のようにtry~catch()でエラーを回避しましょう。
エラーを解決できなくて途方に暮れている人へ。
■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。
このガイドを一通り勉強すれば、C#プログラミングの基礎が学べます。
是非チャレンジしてみてください!
プログラミング初心者の方はぜひチャレンジしてみてください!!