ホームページ  >  記事  >  バックエンド開発  >  C# ファイルが見つかりません例外

C# ファイルが見つかりません例外

PHPz
PHPzオリジナル
2024-09-03 15:20:57946ブラウズ

C# でファイル入出力を処理しているときに、さまざまな例外が発生する可能性がありますが、プログラム内でファイルにアクセスしようとして、そのファイルが存在しないか削除されている場合は、FileNotFoundException が発生します。基本的に、FileNotFound 例外は、システム内にファイルへのアドレスがあるにもかかわらず、プログラムを実行したときに、指定または渡したファイルが見つからない場合に発生します。このファイルが見つからない理由は複数考えられます。ファイルがその場所から削除されたか、ファイル名が変更された可能性があり、記載した名前と一致しません。また、間違ったアドレスを渡し、そのアドレスにヒットしたときにファイルがないため例外が発生する可能性もあります。

構文:

すべてのメソッド、クラス、例外には標準構文があります。

FileNotFound 例外の場合、標準構文は次のとおりです:

public class FileNotFoundException :System.IO.IOException

FileNotFound 例外は IOException の一部であり、SystemException から継承され、Exception および Object クラスに進みます。

C# で FileNotFoundException はどのように動作しますか?

  • FileNotFoundException は、0x80070002 値を保持する HRESULT COR_E_FILENOTFOUND を実装します。
  • この FileNotFound 例外は通常、ファイルの入出力操作を処理するときに発生します。
  • コードがファイルを見つけられない場合、FileNotFoundException() の新しいインスタンスがそのメッセージ文字列とともに作成されます。これはエラーに対してシステムが設定したメッセージです。
  • このようなさまざまなコンストラクターでは、文字列を追加したり、コンテキスト情報やエラー メッセージを表示したりできます。
  • さらに、別のコンストラクターは、この例外の原因となった内部例外への参照を提供できます。

C# FileNotFoundException の例

言及されている例を以下に示します:

例 #1

コード:

using System;
using System.IO;
class Program {
static void Main() {
try {
using (StreamReaderfilereader = new StreamReader("nofile.txt")) {
filereader.ReadToEnd();
}
}
catch (FileNotFoundException ex) {
Console.WriteLine(ex);
}
}
}

説明:

  • システム ファイルから始めただけです。ファイルの入力と出力に対して操作を行うため、ここでは System.IO が重要なインポート ファイルです。次に、クラスと main メソッドがあります。例外をキャッチするために、すでに try catch ブロックに入っています。次に、system.IO 名前空間にある StreamReader クラスを作成します。
  • StreamReader クラスは、テキスト ファイルを読み取るために使用されます。使いやすく、優れたパフォーマンスを提供します。 StreamReader では、nofile.txt を呼び出すオブジェクトがありますが、ご存知のとおり、これは存在しません。次に、ファイルが見つかった場合は最後まで読み取る ReadToEnd メソッドがあります。最後に、catch ブロックがあります。もちろん、このブロックは FileNotFound 例外を保持しており、それをキャッチすると、次の行の出力ステートメントに出力されます。
  • 上記のコードが正常に実行されると、「ファイルが見つかりませんでした…」という例外が出力されます。

出力:

C# ファイルが見つかりません例外

例 #2

ここでは、上記のコードと同様のコードを実行しますが、try catch ブロックがないため、何が問題になるかを正確に推測できない単純なプログラムになります。

コード:

using System.IO;
using System;
class Program {
static void Main() {
using (StreamReaderfilereader = new StreamReader("incorrectfilename.txt")) {
filereader.ReadToEnd();
}
}
}

説明:

  • 2 番目の例では、コードは最初の例とほとんど似ていますが、例外をキャッチする方法は特に実装していません。システムファイルから始まり、次にクラスとメインメソッドです。次に StreamReader に進み、ファイル名が渡されていますが、これは間違っており、次の行でファイルを最後まで読み取ろうとします。
  • しかし、ここでは例外をキャッチしたり特定したりしていません。これはファイルが存在すると信じているシナリオなので、例外は期待されません。実行すると、未処理の例外が出力され、「System.IO.FileNotFoundException: ファイルが見つかりません」がスローされます。

出力:

C# ファイルが見つかりません例外

ご覧のとおり、前の例とは異なり、これはハンドルされない例外であり、出力は期待どおりです。

C# で FileNotFoundException を回避する方法?

他の例外と同様に、この FileNotFound 例外も回避できます。この例外を回避する方法のうち、File.Exists メソッドをお勧めします。引数に渡しているファイルがソース リンクで利用できないかどうかが不明な場合は、File.Exists メソッドを使用することをお勧めします。 File.Exists メソッドを推奨します。

例:

プログラムで File.Exists メソッドを使用し、さらにどのように使用できるかを見ていきます。

コード:

using System.IO;
using System;
class Program {
static void Main() {
bool ifexists = File.Exists("incorrectfilename.txt");
Console.WriteLine("\n "+ifexists);
}
}

説明:

  • ここでのコードは、使用しようとしているファイルの存在が不明な場合に備えて使用するのが理想的です。これは単純な実装であり、このようなコードをループ内に含めることができ、そこで別のファイルまたは代替ファイルをチェックし、存在するファイルが操作に選択されます。
  • File.Exists メソッドがあり、ファイル名を渡し、ファイルが存在するかどうかをチェックしています。
  • 次の行には、ファイルの存在に基づいてブール値 (True または False) を出力する print ステートメントがあります。ファイルは存在しないため、false を返す必要があります。

出力:

C# ファイルが見つかりません例外

結論

結論として、FileNotFound 例外はオブジェクト クラスの IO システム名前空間から発生します。 FileNotFoundException は、ファイルを渡したとき、またはファイルを使用して入出力操作を実行しようとしたときにファイルが存在しないときに発生します。他の理由としては、ファイル名が間違っているか、ソース リンクが間違っていることが考えられます。 File Exists メソッドを使用すると、この例外を回避できます。

以上がC# ファイルが見つかりません例外の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:C# CSV リーダー次の記事:C# CSV リーダー