【C#】パス の一部が見つかりませんでした。の解決方法【DirectoryNotFoundException】
C#で発生するエラー(例外)
System.IO.DirectoryNotFoundException: パス の一部が見つかりませんでした。
上記のエラー(例外)が発生したときの解決方法をご紹介します。
下記にC#で発生する例外処理の一覧をまとめていますので解決できない場合は合わせてご確認ください。
⇒例外処理クラス一覧まとめ【原因と解決方法】
C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選
【C#】パス の一部が見つかりませんでした。のエラーの原因
「System.IO.DirectoryNotFoundException: パス の一部が見つかりませんでした。」
のエラーの原因は下記の通りです。
①指定された文字列のパスが存在しない場所を指している
②指定されたファイルパスのアクセス権限がない
③指定されたファイルパスに日本語が含まれている
エラーコードの例を見てそれぞれ具体的に確認してみましょう。
①指定された文字列のパスが存在しない場所を指している
string logFile = "C:\Users\Sample.txt"; // 存在しないファイルパス
// 存在しないパスを指定しているためエラーが発生する
string logData = File.ReadAllText(logFile);
上記のようにFile.ReadAllText()メソッドを実行するとファイルディレクトリやファイルにアクセスします。
しかしそのファイルディレクトリやファイルが存在しない場合にエラーが出ます。
上記エラーのイメージはこちらです。
存在しないフォルダを指定すると、フォルダを見つけ出せずエラーとなります。
②指定されたファイルパスのアクセス権限がない
フォルダのアクセス権限を持っていない場合やファイルの書き換え権限を付与されていない場合にもエラーは発生します。
下記の図をご覧ください。
「Program Files」フォルダ内のファイルを操作しようとすると「アクセスを拒否される」場合があります。
これと同様の現象がFile.ReadAllText()でも発生します。
アクセスの権限がないためファイルアクセスが遮断され、「System.IO.DirectoryNotFoundException: パス の一部が見つかりませんでした。」が呼び出されるのです。
③指定されたファイルパスに日本語が含まれている
ファイルパスに日本語が含まれている場合にも「DirectoryNotFoundException」のエラーが発生する場合があります。
utf-8やASCIIなどの文字コードに対応していない日本語がファイルパスに存在するとエラーが発生する場合があるので注意しましょう。
「System.IO.DirectoryNotFoundException:」の詳細はこちらから
【C#】パス の一部が見つかりませんでした。エラーの解決方法
「System.IO.DirectoryNotFoundException: パス の一部が見つかりませんでした。」のエラーを解決する方法をご紹介します。
①存在するファイルパスを設定する
string logFile = "C:\Users\DC014\Pictures\Sample.txt"; // 存在するファイルパス
string logData = File.ReadAllText(logFile);
存在するファイルパスを指定すればエラーは解消されます。
②実行環境を管理者モードで実行する
プログラムを実行する際に「管理者モードを付与」するために実行環境は「管理者モード」で起動しましょう。
上記の例ではVisual Studioを「管理者モード」で起動しています。
このようにプログラムを実行するときは、「管理者モード」起動してください。
(主にコマンドプロンプトやEclipseなど)
③ファイルパスを英字のみにする
日本語を含むファイルパスだとエラーが発生する場合があるので、英語のみのファイルパスに設定しましょう。
エラーを解決できなくて途方に暮れている人へ。
■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。
このガイドを一通り勉強すれば、C#プログラミングの基礎が学べます。
是非チャレンジしてみてください!
プログラミング初心者の方はぜひチャレンジしてみてください!!