Heim  >  Artikel  >  Backend-Entwicklung  >  C# FileNotFoundException

C# FileNotFoundException

PHPz
PHPzOriginal
2024-09-03 15:20:57946Durchsuche

Beim Umgang mit Dateien-Eingabe-Ausgabe in C# können verschiedene Ausnahmen auftreten, aber die FileNotFoundException wird ausgelöst, wenn wir versuchen, auf eine Datei in unserem Programm zuzugreifen und diese Datei nicht existiert oder gelöscht wird. Im Grunde genommen tritt die FileNotFound-Ausnahme auf, wenn wir eine Adresse zu einer Datei in unserem System haben, aber wenn wir das Programm ausführen, die von uns erwähnte oder übergebene Datei nicht gefunden werden kann. Es kann mehrere Gründe dafür geben, dass diese Datei nicht gefunden wird. Die Datei wurde möglicherweise vom Speicherort gelöscht oder der Dateiname wurde möglicherweise geändert und stimmt nicht mit den von uns genannten Namen überein. Es ist auch möglich, wenn wir eine falsche Adresse übergeben und beim Erreichen der Adresse keine Datei vorhanden ist und daher die Ausnahme auftritt.

Syntax:

Jede Methode, Klasse oder Ausnahme hat ihre Standardsyntax.

Im Falle einer FileNotFound-Ausnahme lautet die Standardsyntax wie folgt:

public class FileNotFoundException :System.IO.IOException

Die FileNotFound-Ausnahme ist Teil von IOException, die von SystemException geerbt wird und bis zur Exception- und Object-Klasse reicht.

Wie funktioniert FileNotFoundException in C#?

  • Die FileNotFoundException implementiert das HRESULT COR_E_FILENOTFOUND, das den Wert 0x80070002 enthält.
  • Diese FileNotFound-Ausnahme tritt normalerweise auf, wenn es um Eingabe-Ausgabe-Vorgänge für Dateien geht.
  • Wenn der Code die Datei nicht findet, erstellt er eine neue Instanz von FileNotFoundException() zusammen mit der zugehörigen Nachrichtenzeichenfolge, bei der es sich um eine vom System festgelegte Nachricht für den Fehler handelt.
  • In einer Vielzahl solcher Konstruktoren können Zeichenfolgen hinzugefügt, Kontextinformationen und Fehlermeldungen angezeigt werden.
  • Zusätzlich kann ein anderer Konstruktor einen Verweis auf die innere Ausnahme bereitstellen, die diese Ausnahme verursacht hat.

Beispiele für C# FileNotFoundException

Im Folgenden finden Sie die genannten Beispiele:

Beispiel #1

Code:

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);
}
}
}

Erklärung:

  • Wir haben einfach mit den Systemdateien begonnen. System.IO ist hier eine wichtige Importdatei, da wir Operationen über die Dateieingabe und -ausgabe durchführen werden. Dann haben wir unsere Klasse und unsere Hauptmethode. Wir haben bereits unseren try-catch-Block eingegeben, um die Ausnahme abzufangen. Dann haben wir unsere StreamReader-Klasse, die im system.IO-Namespace zu finden ist.
  • Die StreamReader-Klasse wird zum Lesen einer Textdatei verwendet. Es ist einfach zu bedienen und bietet eine gute Leistung. Mit StreamReader haben wir unser Objekt, das nofile.txt aufruft, das, wie wir wissen, nicht existiert. Dann haben wir die ReadToEnd-Methode, die die Datei bis zum Ende liest, wenn sie gefunden wird. Schließlich haben wir unseren Catch-Block, der natürlich, während wir sprechen, die FileNotFound-Ausnahme enthält und wenn er sie abfängt, wird sie in der Ausgabeanweisung in der nächsten Zeile ausgegeben.
  • Nach erfolgreicher Ausführung des obigen Codes wird als Ausgabe eine Ausnahme angezeigt: „Datei konnte nicht gefunden werden…“.

Ausgabe:

C# FileNotFoundException

Beispiel #2

Hier werden wir den Code ähnlich dem obigen Code ausführen, aber ohne Try-Catch-Block wird es ein einfaches Programm sein, bei dem wir nicht erraten können, was genau schief gehen könnte.

Code:

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

Erklärung:

  • Bei unserem zweiten Beispiel ähnelt der Code fast unserem ersten Beispiel, wir haben jedoch ausdrücklich keine Möglichkeit implementiert, die Ausnahme abzufangen. Begonnen mit der Systemdatei, dann unserer Klasse und der Hauptmethode. Wenn wir dann zu StreamReader übergehen, wird uns unser Dateiname übergeben, der falsch ist, und in der nächsten Zeile versuchen wir, die Datei bis zum Ende zu lesen.
  • Aber wir haben hier nicht versucht, die Ausnahme abzufangen oder zu identifizieren. Dies ist ein Szenario, bei dem wir glauben, dass die Datei existiert, und daher keine Ausnahme erwarten. Bei der Ausführung wird eine unbehandelte Ausnahme ausgegeben und die Meldung „System.IO.FileNotFoundException: Datei konnte nicht gefunden werden“ wird ausgelöst.

Ausgabe:

C# FileNotFoundException

Und wie Sie sehen, handelt es sich im Gegensatz zu unserem früheren Beispiel um eine nicht behandelte Ausnahme und die Ausgabe ist wie erwartet.

Wie vermeide ich FileNotFoundException in C#?

Wie jede andere Ausnahme kann auch diese FileNotFound-Ausnahme vermieden werden. Von den Möglichkeiten, diese Ausnahme zu vermeiden, wird die Methode File.Exists empfohlen. Wenn wir unsicher sind, ob die Datei, die wir als Argument übergeben, nicht im Quelllink verfügbar ist, ist es besser, die Methode File.Exists zu verwenden. Die File.Exists-Methode wird empfohlen.

Beispiel:

Wir werden die File.Exists-Methode im Programm verwenden und sehen, wie sie weiter verwendet werden kann.

Code:

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

Erklärung:

  • Unser Code hier ist ideal für den Fall, dass wir nicht sicher sind, ob die Datei existiert, die wir verwenden möchten. Dies ist eine einfache Implementierung. Wir können solchen Code in Schleifen haben, in denen nach unterschiedlichen oder alternativen Dateien gesucht wird und die vorhandene Datei für den Vorgang ausgewählt wird.
  • Wir haben die File.Exists-Methode, bei der wir den Dateinamen übergeben haben und prüfen, ob die Datei existiert.
  • Jetzt haben wir in der nächsten Zeile die print-Anweisung, die basierend auf der Existenz der Datei einen booleschen Wert ausgibt, entweder True oder False. Unsere Datei existiert nicht, daher muss sie „false“ zurückgeben.

Ausgabe:

C# FileNotFoundException

Fazit

Abschließend lässt sich sagen, dass die FileNotFound-Ausnahme aus dem E/A-System-Namespace der Objektklasse stammt. FileNotFoundException ist für das Auftreten verantwortlich, wenn wir eine Datei übergeben oder versuchen, Eingabe- oder Ausgabevorgänge mit einer Datei auszuführen, die Datei jedoch nicht vorhanden ist. Andere Gründe könnten ein falscher Dateiname oder ein falscher Quelllink sein. Um diese Ausnahme zu vermeiden, kann die Methode „File Exists“ verwendet werden.

Das obige ist der detaillierte Inhalt vonC# FileNotFoundException. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C# CSV-ReaderNächster Artikel:C# CSV-Reader