【C#】指定されたパス、ファイル名、またはその両方が長すぎます。の解決方法【PathTooLongException】
C#で発生するエラー(例外)
System.IO.PathTooLongException: 指定されたパス、ファイル名、またはその両方が長すぎます。完全限定型名は 260 文字未満で指定し、ディレクトリ名は 248 未満で指定してください。
上記のエラー(例外)が発生したときの解決方法をご紹介します。
下記にC#で発生する例外処理の一覧をまとめていますので解決できない場合は合わせてご確認ください。
⇒例外処理クラス一覧まとめ【原因と解決方法】
C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選
【C#】指定されたパス、ファイル名、またはその両方が長すぎます。のエラーの原因
「System.IO.PathTooLongException: 指定されたパス、ファイル名、またはその両方が長すぎます。」
のエラーの原因は
パス名または完全修飾ファイル名がシステム定義の最大長を超えている
からです。
※パス名…相対パス
※完全修飾ファイル名…ファイルを最初から最後まで完全に記述する形式のパス
エラーコードを見て具体的に確認してみましょう。
string logFilePathLong = "C:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
string logData = File.ReadAllText(logFilePathLong);// ファイルパスが260文字より長いためエラーが発生
上記のように、260文字より長いパスを設定しファイルを読み込もうとするとエラーが発生します。
エラーのイメージはこちらです。
このようにパス名または完全修飾ファイル名がシステム定義の最大長を超えている場合にエラーが発生します。
注意
このエラー.NET Framework 4.6.1 以前のバージョンを対象としています。
.NET Framework 4.6.1 以後のバージョンでは、パスの長さが (32,767) 文字を超えたときにエラーが発生します。※ちなみに32,767はInt16.MaxValue値
「System.IO.PathTooLongException:」の詳細はこちらから
【C#】指定されたパス、ファイル名、またはその両方が長すぎます。エラーの解決方法
「System.IO.PathTooLongException: 指定されたパス、ファイル名、またはその両方が長すぎます。」のエラーを解決する方法をご紹介します。
①パスの長さを260文字より短く設定する
string logFilePathLong = "C:\Users\DC015\OneDrive\desktop\test.txt"; //存在するファイルパス。
string logData = File.ReadAllText(logFilePathLong);// エラーが解消される
存在するファイルパス且つ260文字より短いファイルパス名を指定すればエラーは解消されます。
存在しないファイルパスを指定した場合は下記のエラーが発生する場合があります。
エラーが出た方はこちらをご確認ください。
エラーを解決できなくて途方に暮れている人へ。
■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。
このガイドを一通り勉強すれば、C#プログラミングの基礎が学べます。
是非チャレンジしてみてください!
プログラミング初心者の方はぜひチャレンジしてみてください!!