C#のFileNotFoundException(ファイルが見つからない例外)とは?原因と対処法を解説
C#のFileNotFoundExceptionとは
C#でプログラムを実行中に、指定したファイルが存在しない場合に発生するのがFileNotFoundException(System.IO.FileNotFoundException)です。これは、ファイルの読み書きを行う際によく遭遇する例外の一つです。
この記事では、StreamReaderクラスを使って存在しないファイルを読み込もうとしたときに、この例外がどのように発生するのかを具体例とともに解説します。
FileNotFoundExceptionが発生する仕組み
例えば、以下のコードではStreamReader()コンストラクタを使って「new.txt」というファイルを開こうとしています。
reader = new StreamReader("new.txt")ファイルを開いた後、内容を読み取るために次のメソッドを使用します。
reader.ReadToEnd();
しかし、もしカレントディレクトリに「new.txt」というファイルが存在しなければ、FileNotFoundExceptionがスローされます。
サンプルコード
実際に例外が発生するコードを見てみましょう。
using System.IO;
using System;
class Program {
static void Main() {
using (StreamReader reader = new StreamReader("new.txt")) {
reader.ReadToEnd();
}
}
}このコードを実行すると、ファイル「new.txt」が存在しないため、以下のような例外が出力されます。
Unhandled Exception: System.IO.FileNotFoundException: Could not find file …
例外への対処方法
FileNotFoundExceptionを回避するには、主に以下の方法があります。
1. ファイルの存在を事前に確認する
File.Exists()メソッドを使えば、ファイルを開く前にその存在をチェックできます。
if (File.Exists("new.txt")) {
using (StreamReader reader = new StreamReader("new.txt")) {
reader.ReadToEnd();
}
} else {
Console.WriteLine("ファイルが見つかりません。");
}2. try-catchブロックで例外を捕捉する
例外が発生してもプログラムが異常終了しないよう、try-catchで適切に処理することも重要です。
try {
using (StreamReader reader = new StreamReader("new.txt")) {
Console.WriteLine(reader.ReadToEnd());
}
} catch (FileNotFoundException ex) {
Console.WriteLine($"エラー: {ex.Message}");
}まとめ
FileNotFoundExceptionは、指定されたパスにファイルが存在しない場合に発生する例外です。実行時のカレントディレクトリや相対パス・絶対パスの指定ミスもよくある原因なので、File.Exists()による事前チェックやtry-catchによる例外処理を組み合わせて、堅牢なコードを書くことをおすすめします。
-
Pythonで作るWebサイトブロッカー ― 業務時間中にSNSへのアクセスを自動遮断する方法
大手IT企業で働いたことがある方なら、FacebookやYouTube、InstagramといったSNS系のWebサイトが社内からアクセスできないよう制限されていることに気づいた経験があるかもしれません。こうした制限は、サードパーティ製アプリに頼らなくても実現できます。自分専用のオリジナルツールを作れば、好きなWebサイトを自由にブロックできるのです。しかもPythonでWebサイトブロッカーを開発するのは、それほど難しいことではありません。この記事では、指定したWebサイトをブロックするPythonスクリプトの作り方を解説します。前提条件Python 3.x がインストールされていることPy
-
Windows 10のPowerShellでファイルをダウンロードする方法【コマンド例付き】
Windows 10に搭載されているWindows PowerShellは、コマンドプロンプトをはるかに上回る機能を持つ強力なツールです。OSに対してより高度な操作と制御を提供できるため、近い将来コマンドプロンプトに取って代わるとも言われています。Microsoftが開発したPowerShellは、タスクの自動化や構成管理を目的としたツールで、.NET Frameworkをベースに、コマンドラインインターフェースとスクリプト言語を備えています。 PowerShellでファイルをダウンロードする手順 ここでは、シンプルなコマンドを使って、Windows PowerShellからインターネット上の