C#のDirectoryNotFoundExceptionとは?発生原因と対処法をわかりやすく解説
C#でプログラムからアクセスしようとしたディレクトリ(フォルダ)が存在しない場合、「System.IO.DirectoryNotFoundException」がスローされます。この例外は、指定されたパスの一部または全体が見つからないときに発生するもので、ファイルやフォルダを扱う処理でよく遭遇するエラーの一つです。
ここでは、存在しないディレクトリをGetDirectories()メソッドで取得しようとした場合に、どのように例外が発生するのかを具体例とともに見ていきましょう。
例外が発生するサンプルコード
using System.IO;
using System;
class Program {
static void Main() {
Directory.GetDirectories("D:\\new\\");
}
}上記のコードでは、「D:\new」というディレクトリ内のサブディレクトリ一覧をGetDirectories()メソッドで取得しようとしています。しかし、このパスが実際には存在しないため、プログラムを実行すると以下のような例外がスローされます。
Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path
エラーメッセージの「Could not find a part of the path(パスの一部が見つかりませんでした)」は、指定されたパス上に存在しないフォルダがあることを示しています。
DirectoryNotFoundExceptionへの対処法
この例外を回避・適切に処理するには、主に以下の2つの方法があります。
1. Directory.Exists()で事前に存在確認を行う
ディレクトリにアクセスする前に、Directory.Exists()メソッドで対象のパスが存在するかどうかを確認する方法です。
if (Directory.Exists(@"D:\new\\")) {
string[] dirs = Directory.GetDirectories(@"D:\new\\");
} else {
Console.WriteLine("指定されたディレクトリは存在しません。");
}2. try-catchで例外を捕捉する
例外が発生する可能性のある処理をtry-catchブロックで囲み、DirectoryNotFoundExceptionを明示的に捕捉して処理する方法です。
try {
string[] dirs = Directory.GetDirectories(@"D:\new\\");
} catch (DirectoryNotFoundException ex) {
Console.WriteLine($"エラーが発生しました: {ex.Message}");
}事前の存在チェックと例外処理を組み合わせることで、予期しないエラーによるプログラムの異常終了を防ぎ、より堅牢なアプリケーションを構築できます。
-
MySQLのデータディレクトリを確認する方法|Windowsコマンドラインで@@datadirを使う手順
MySQLのデータディレクトリの場所を調べるにはMySQLのデータファイルが実際に保存されている「データディレクトリ」の場所を確認したい場合は、システム変数datadirを使うのが最も簡単です。SELECT文に組み込むだけで、現在の設定値をひと目で把握できます。確認用のクエリMySQLモニター(コマンドライン)から、次のように入力して実行します。mysql> SELECT @@datadir;実行結果の例Windows環境での典型的な出力は以下の通りです。+---------------------------------------------+ | @@datadir
-
MySQLのmy.iniが見つからない?ProgramDataの隠しフォルダから探す方法
MySQLの設定ファイル「my.ini」が見つからない理由MySQLの設定ファイル「my.ini」は、一般的なインストールフォルダではなく、ProgramDataフォルダ内の隠しディレクトリに保存されています。このフォルダは隠し属性になっているため、エクスプローラーの初期設定では表示されず、「my.iniがどこにもない」と悩む方が多いのです。以下の手順に沿って進めれば、簡単にファイルを見つけられます。my.iniへのアクセス手順1. Cドライブを開くまず、エクスプローラーでCドライブを開きます。2. ProgramDataフォルダを開くCドライブ直下にある「ProgramData」フォルダをク