Rumah >Java >javaTutorial >Java FileNotFoundException
Java FileNotFoundException ialah sejenis pengecualian yang sering berlaku semasa bekerja dengan API Fail dalam Java di mana laluan yang ditentukan untuk fail untuk tujuan membaca atau menulis dalam pembina kelas FileInputStream, FileOutputStream dan RandomAccessFile, sama ada tidak wujud atau tidak boleh diakses disebabkan kunci sedia ada atau isu teknikal lain. Ini adalah pengecualian yang diperiksa ialah subkelas langsung IOException yang telah diperkenalkan dengan JDK 1.0. Selain itu, ia mengandungi dua jenis pembina yang boleh dipanggil di mana seseorang mengembalikan Pengecualian dengan mesej nol untuk dipaparkan, manakala yang lain mencetak mesej yang ditentukan sekiranya pengecualian berlaku.
IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sintaks:
public class FileNotFoundExceptionextends IOException
Kelas ini ialah subkelas langsung IOException, dengan itu mewarisi semua kaedah dan pembolehubah kelas.
FileNotFoundException ialah pengecualian bertanda yang digunakan yang berlaku apabila laluan fail yang ditentukan untuk mengakses tidak wujud atau tidak boleh diakses. Dengan pengecualian yang diperiksa, ini bermakna pengkompil java menyemak pada masa penyusunan jika pengecualian ini telah dikendalikan atau tidak; jika tidak, ralat masa kompilasi berlaku. Mari kita lihat bagaimana pengecualian dilemparkan pada masa jalan sekiranya ia telah dikendalikan menggunakan blok cuba-tangkap atau menggunakan kata kunci lontaran dalam definisinya pada masa pengkompil.
Contoh:
File fileObj = new File("C:/JavaPractice.txt")
Andaikan kita membuat instantiat objek kelas Fail seperti yang diberikan di atas dengan laluan fail, dan fail itu tidak wujud. Dalam kes itu, apabila pengkompil cuba membaca atau menulis fail dan menemui situasi sedemikian, ia membuang pengecualian dan mencipta contoh FileNotFoundExceptionclass. Sekiranya tidak dinyatakan pembina mana yang perlu dipanggil, pembina tanpa mesej ralat akan dilemparkan.
Oleh itu aplikasi gagal dengan ralat di bawah:
FileNotFoundException ialah subkelas IOException yang sangat berguna untuk dikesan jika fail yang dinyatakan dalam laluan fail wujud dan juga boleh diakses. Oleh itu, untuk menggunakan ini, seseorang perlu membuat instantiat, dan ia adalah kelas awam; ia boleh dijadikan instantiated dari mana-mana tempat dalam projek. Dan untuk mencipta contoh kelas mempunyai 2 jenis pembina.
Diberikan di bawah ialah dua jenis pembina:
Pembina jenis ini digunakan untuk mencipta contoh kelas FileNotFoundException di mana ia mengembalikan null sebagai mesej butiran ralatnya.
Sintaks:
public FileNotFoundException()
Contoh:
FileNotFoundExceptionexcepObj = new FileNotFoundException()
Pembina jenis ini digunakan untuk mencipta contoh kelas FileNotFoundException di mana ia mengembalikan rentetan tertentu sebagai mesej butiran ralatnya.
Sintaks:
public FileNotFoundException(String s)
Contoh:
FileNotFoundExceptionexcepObj = new FileNotFoundException("This is a FileNotFoundException")
Mesej ralat yang ditentukan boleh diambil dengan mudah menggunakan kaedah Throwable.getMessage() kerana ini adalah salah satu kelas super kelas FileNotFoundException.
Diberikan di bawah adalah contoh yang dinyatakan:
Di sini kita melihat bagaimana pengecualian dilemparkan oleh JVM jika satu fail tidak boleh diakses. Dalam hal ini, mesej ralat yang dipaparkan dalam output adalah yang ditentukan secara lalai oleh JVM.
Kod:
//package Proc; import java.io.Console; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; public class prac1 { public static void main(String[] args) { File fileObj = new File("D:/JavaPractice.txt"); FileInputStream fISObj = null; try{ fISObj = new FileInputStream(fileObj); while (fISObj.read()!=-1){ System.out.println(fISObj.read()); } }catch (FileNotFoundException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } } }
Output:
Dalam contoh ini, kami akan menggunakan pembina dengan mesej ralat yang ditentukan untuk memaparkan ralat apabila fail tidak wujud pada laluan yang diberikan. Kami telah menggunakan kata kunci lontaran untuk membuang pengecualian.
Kod:
//package Proc; import java.io.Console; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; public class prac1 { public static void main(String[] args) throws FileNotFoundException,IOException{ File fileObj = new File("D:/JavaPractice.txt"); if(!fileObj.exists()){ throw new FileNotFoundException("This file doesnot exist in the path specified "+fileObj.toString()); } else { System.out.println("Welcome, we got into file "+fileObj.toString()); } } }
Output:
Mendapatkan FileNotFoundException dalam aplikasi menjadikan aplikasi tidak cekap. Langkah pertama untuk mengelakkan pengecualian ini adalah untuk menyemak sama ada fail yang ditentukan wujud pada laluan yang ditentukan, tetapi masih, mungkin terdapat situasi dalam aplikasi masa nyata yang fail itu tiada atau jika proses lain mengunci fail untuk dibaca tulis ke dalamnya.
Untuk mengelakkan ini, seseorang boleh menggunakan kaedah java.io.File.exists() untuk menyemak sama ada fail yang cuba dibaca wujud pada laluan yang ditentukan atau tidak. Menggunakan ini, kita mesti memastikan sama ada kod kita dapat mengendalikan pengecualian FileNotFoundException.
Untuk mengelakkan kes sedemikian, seseorang perlu berhati-hati jika fail yang kami cuba baca sedang dikunci oleh pengguna lain yang menulisnya. Untuk ini kita boleh menggunakan kaedah canRead() atau canWrite() java.io. Kelas fail yang memberitahu sama ada fail yang ditentukan tersedia untuk tujuan membaca atau menulis atau tidak.
Menggunakan 2 langkah berjaga-jaga ini, seseorang boleh dengan mudah mengelakkan percubaan oleh contoh kelas fail untuk membuka fail yang boleh menyebabkan pengecualian yang diperiksa. Ini meningkatkan kecekapan aplikasi yang termasuk program untuk mengakses fail dari laluan yang ditentukan.
FileNotFoundException ialah sejenis pengecualian yang disemak yang berlaku sebaik sahaja percubaan dibuat pada fail yang sama ada tidak wujud atau tidak boleh diakses pada masa itu disebabkan beberapa kunci. Oleh kerana ia adalah pengkompil java pengecualian yang diperiksa memastikan ia telah dikendalikan pada masa penyusunan. Namun begitu, jika seseorang perlu mengelakkannya supaya mereka boleh menggunakan kaedah exist(), canRead() atau canWrite() yang terdapat dalam kelas Fail.
Atas ialah kandungan terperinci Java FileNotFoundException. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!