Rumah  >  Artikel  >  pembangunan bahagian belakang  >  C# FileNotFoundException

C# FileNotFoundException

PHPz
PHPzasal
2024-09-03 15:20:57946semak imbas

Semasa berurusan dengan Output Input Fail dalam C#, pelbagai pengecualian mungkin meningkat, tetapi FileNotFoundException dibangkitkan apabila kami cuba mengakses fail dalam program kami dan fail itu tidak wujud atau dipadamkan. Jadi, pada asasnya, Pengecualian FileNotFound berlaku apabila kita mempunyai alamat kepada fail dalam sistem kita, tetapi apabila kita melaksanakan program itu, fail yang kita nyatakan atau luluskan, tidak dijumpai. Mungkin terdapat beberapa sebab mengapa fail ini tidak ditemui. Fail mungkin dipadamkan dari lokasi atau nama fail mungkin telah ditukar dan tidak sepadan dengan nama yang kami nyatakan. Ia juga mungkin apabila kami menghantar alamat yang salah dan apabila ia mencecah alamat, tiada fail dan dengan itu pengecualian berlaku.

Sintaks:

Setiap kaedah, kelas atau pengecualian mempunyai sintaks standardnya.

Dalam kes Pengecualian FileNotFound, sintaks standard adalah seperti berikut:

public class FileNotFoundException :System.IO.IOException

Pengecualian FileNotFound ialah sebahagian daripada IOException, yang diwarisi daripada SystemException, naik ke kelas Exception dan Object.

Bagaimana FileNotFoundException berfungsi dalam C#?

  • FileNotFoundException melaksanakan HRESULT COR_E_FILENOTFOUND, yang memegang nilai 0x80070002.
  • Pengecualian FileNotFound ini biasanya berlaku apabila berurusan dengan operasi Input Output untuk fail.
  • Apabila kod tidak menjumpai fail, ia mencipta contoh baharu FileNotFoundException() bersama-sama dengan rentetan mesejnya, iaitu mesej set sistem untuk ralat.
  • Dalam pelbagai pembina sedemikian, rentetan boleh ditambah, maklumat konteks dan mesej ralat boleh dipaparkan.
  • Selain itu, pembina lain boleh memberikan rujukan kepada pengecualian dalaman yang menyebabkan pengecualian ini.

Contoh C# FileNotFoundException

Diberikan di bawah adalah contoh yang dinyatakan:

Contoh #1

Kod:

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

Penjelasan:

  • Kami baru sahaja bermula dengan fail sistem. System.IO ialah fail import yang penting di sini, kerana kami akan melakukan operasi ke atas Input dan Output fail. Kemudian kami mempunyai kelas dan kaedah utama kami. Kami telah pun memasuki blok try catch kami untuk menangkap pengecualian. Kami kemudiannya mempunyai kelas StreamReader kami, yang terdapat dalam ruang nama system.IO.
  • Kelas StreamReader digunakan untuk membaca fail teks. Ia mudah digunakan dan memberikan prestasi yang baik. Dengan StreamReader, kami mempunyai objek kami yang memanggil nofile.txt, yang seperti yang kami tahu tidak wujud. Kemudian kami mempunyai kaedah ReadToEnd yang akan membaca fail sehingga akhir, jika ia dijumpai. Akhir sekali, kami mempunyai blok tangkapan kami, yang, sudah tentu, semasa kami bercakap memegang Pengecualian FileNotFound dan apabila ia menangkapnya, ia akan dicetak dalam pernyataan output dalam baris seterusnya.
  • Setelah pelaksanaan kod di atas berjaya, output akan menjadi pengecualian, "Tidak dapat mencari fail...".

Output:

C# FileNotFoundException

Contoh #2

Di sini kami akan melaksanakan kod yang serupa dengan kod di atas, tetapi tanpa sebarang try catch block, ia akan menjadi program mudah, di mana kami tidak dapat meneka apa sebenarnya yang boleh berlaku.

Kod:

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

Penjelasan:

  • Dengan contoh kedua kami, kod itu hampir serupa dengan contoh pertama kami, tetapi kami secara khusus tidak melaksanakan sebarang cara untuk menangkap pengecualian. Bermula dengan fail sistem, kemudian kelas dan kaedah utama kami. Kemudian beralih ke StreamReader, kami telah menghantar nama fail kami, yang tidak betul dan dalam baris seterusnya kami cuba membaca fail itu hingga akhir.
  • Tetapi kami belum cuba menangkap atau mengenal pasti pengecualian di sini, ini adalah senario di mana kami percaya bahawa fail itu wujud dan oleh itu kami tidak menjangkakan sebarang pengecualian. Selepas melaksanakan, ia akan mencetak Pengecualian Tidak Dikendali dan "System.IO.FileNotFoundException: Tidak dapat mencari fail" akan dilemparkan.

Output:

C# FileNotFoundException

Dan seperti yang anda lihat, tidak seperti contoh kami yang terdahulu, ini adalah pengecualian yang tidak dikendalikan dan output adalah seperti yang dijangkakan.

Bagaimana untuk Mengelakkan FileNotFoundException dalam C#?

Sama seperti pengecualian lain, Pengecualian FileNotFound ini boleh dielakkan. Daripada cara yang boleh kami gunakan untuk mengelakkan pengecualian ini, kaedah File.Exists disyorkan. Apabila kami tidak pasti sama ada fail yang kami hantar dalam hujah tidak tersedia pada pautan sumber, lebih baik menggunakan kaedah File.Exists. Kaedah File.Exists disyorkan.

Contoh:

Kami akan menggunakan kaedah File.Exists dalam program dan lihat bagaimana ia boleh digunakan selanjutnya.

Kod:

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

Penjelasan:

  • Kod kami di sini sesuai sekiranya kami tidak pasti kewujudan fail yang akan kami gunakan. Ini adalah pelaksanaan yang mudah, kita boleh mempunyai kod sedemikian dalam gelung di mana ia menyemak fail yang berbeza atau alternatif dan mana-mana yang wujud dipilih untuk operasi.
  • Kami mempunyai kaedah File.Exists, di mana kami telah melepasi nama fail dan menyemak sama ada fail itu wujud.
  • Sekarang dalam baris seterusnya, kami mempunyai pernyataan cetakan, yang akan mencetak nilai boolean, sama ada Benar atau Salah, berdasarkan kewujudan fail. Fail kami tidak wujud, jadi ia mesti mengembalikan fail palsu.

Output:

C# FileNotFoundException

Kesimpulan

Untuk membuat kesimpulan, Pengecualian FileNotFound berasal daripada ruang nama sistem IO bagi kelas objek. FileNotFoundException bertanggungjawab untuk berlaku pada masa apabila kami menghantar fail atau cuba melaksanakan operasi input atau output dengan fail tetapi fail itu tidak wujud. Sebab lain mungkin, nama fail yang salah, atau pautan sumber yang salah. Kaedah File Exists boleh digunakan untuk mengelakkan pengecualian ini.

Atas ialah kandungan terperinci C# FileNotFoundException. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Pembaca C# CSVArtikel seterusnya:Pembaca C# CSV