Rumah > Java > javaTutorial > Java FileNotFoundException

Java FileNotFoundException

WBOY
Lepaskan: 2024-08-30 16:14:52
asal
1141 orang telah melayarinya

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-olok

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks:

public class FileNotFoundExceptionextends IOException
Salin selepas log masuk
  • awam: Kata kunci awam merujuk kepada kelas yang diberikan boleh diakses daripada mana-mana kelas dalam projek dan perlu diwarisi untuk membuang pengecualian.

Kelas ini ialah subkelas langsung IOException, dengan itu mewarisi semua kaedah dan pembolehubah kelas.

Bagaimana FileNotFoundException berfungsi di Java?

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")
Salin selepas log masuk

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:

Java FileNotFoundException

Pembina Java FileNotFoundException

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:

1. Pembina tanpa mesej ralat

Pembina jenis ini digunakan untuk mencipta contoh kelas FileNotFoundException di mana ia mengembalikan null sebagai mesej butiran ralatnya.

Sintaks:

public FileNotFoundException()
Salin selepas log masuk

Contoh:

FileNotFoundExceptionexcepObj = new FileNotFoundException()
Salin selepas log masuk

2. Pembina dengan mesej ralat

Pembina jenis ini digunakan untuk mencipta contoh kelas FileNotFoundException di mana ia mengembalikan rentetan tertentu sebagai mesej butiran ralatnya.

Sintaks:

public FileNotFoundException(String s)
Salin selepas log masuk

Contoh:

FileNotFoundExceptionexcepObj = new FileNotFoundException("This is a FileNotFoundException")
Salin selepas log masuk

Mesej ralat yang ditentukan boleh diambil dengan mudah menggunakan kaedah Throwable.getMessage() kerana ini adalah salah satu kelas super kelas FileNotFoundException.

Contoh Java FileNotFoundException

Diberikan di bawah adalah contoh yang dinyatakan:

Contoh #1

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();
}
}
}
Salin selepas log masuk

Output:

Java FileNotFoundException

Contoh #2

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());
}
}
}
Salin selepas log masuk

Output:

Java FileNotFoundException

Bagaimana untuk mengelakkan FileNotFoundException?

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.

Kes 1: Fail tiada

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.

Kes 2: Fail tidak boleh diakses

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.

Kesimpulan

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!

Label berkaitan:
sumber:php
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan