ในขณะที่อ่านเนื้อหาของไฟล์ในบางสถานการณ์ จุดสิ้นสุดของไฟล์จะไปถึงในสถานการณ์ดังกล่าว EOFException จะถูกส่งออกไป
โดยเฉพาะอย่างยิ่ง ข้อยกเว้นนี้ถูกส่งออกไปในขณะที่อ่านข้อมูลโดยใช้ออบเจ็กต์สตรีมอินพุต ในสถานการณ์อื่นๆ ค่าเฉพาะจะถูกส่งออกไปเมื่อถึงจุดสิ้นสุดของไฟล์
ตัวอย่าง
ให้เราพิจารณาคลาส DataInputStream ซึ่งมีวิธีการต่างๆ เช่น readboolean(), readByte(), readChar() เป็นต้น เพื่ออ่านค่าดั้งเดิม ขณะอ่านข้อมูลจากไฟล์โดยใช้วิธีการเหล่านี้เมื่อถึงจุดสิ้นสุดของไฟล์ EOFException จะถูกส่งออกไป
import java.io.DataInputStream;import java.io.FileInputStream คลาสสาธารณะ EOFExample { public static void main (String [] args) พ่นข้อยกเว้น {// การอ่านจากไฟล์ที่สร้างขึ้นด้านบนโดยใช้เมธอด readChar () DataInputStream dis =ใหม่ DataInputStream(FileInputStream ใหม่("D:\\data.txt")); ในขณะที่ (จริง) { ถ่าน ch; ch =dis.readChar(); System.out.print(ch); } }}
ข้อยกเว้นรันไทม์
สวัสดี คุณเป็นอย่างไรบ้างในเธรด "main" java.io.EOFException ที่ java.io.DataInputStream.readChar (ไม่ทราบแหล่งที่มา) ที่ SEPTEMBER.remaining.EOFexample.main(EOFExample.java:11)
การจัดการ EOFException
คุณไม่สามารถอ่านเนื้อหาของไฟล์โดยไม่ถึงจุดสิ้นสุดของไฟล์โดยใช้ DataInputStream ระดับ. คุณสามารถใช้คลาสย่อยอื่นของอินเทอร์เฟซ InputStream ได้หากต้องการ
ตัวอย่าง
ในตัวอย่างต่อไปนี้ เราได้เขียนโปรแกรมข้างต้นใหม่โดยใช้คลาส FileInputStream แทน DataInputStream เพื่ออ่านข้อมูลจากไฟล์
<ก่อนหน้า> นำเข้า java.io.DataOutputStream นำเข้า java.io.File นำเข้า java.io.FileInputStream นำเข้า java.io.FileOutputStream นำเข้า java.util.Scanner คลาสสาธารณะ AIOBSample { โมฆะสาธารณะหลัก (สตริง [] args) ส่งข้อยกเว้น { // กำลังอ่านข้อมูลจากผู้ใช้ byte [] buf =" สวัสดี คุณเป็นอย่างไรบ้าง".getBytes (); //การเขียนลงในไฟล์โดยใช้ DataOutputStream DataOutputStream dos =new DataOutputStream(new FileOutputStream("D:\\data.txt")); สำหรับ (ไบต์ b:buf) { dos.writeChar (b); } dos.flush(); System.out.println("เขียนข้อมูลเรียบร้อยแล้ว"); }}ผลลัพธ์
เขียนข้อมูลเรียบร้อยแล้ว
ต่อไปนี้เป็นอีกวิธีในการจัดการ EOFException ใน Java -
<ก่อน> นำเข้า java.io.DataInputStream; นำเข้า java.io.EOFException; นำเข้า java.io.FileInputStream; นำเข้า java.io.IOException; การจัดการคลาสสาธารณะEOF { โมฆะสาธารณะหลัก (สตริง [] args) พ่นข้อยกเว้น { DataInputStream dis =ใหม่ DataInputStream(FileInputStream ใหม่("D:\\data.txt")); ในขณะที่ (จริง) { ถ่าน ch; ลอง { ch =dis.readChar(); System.out.print(ch); } จับ (EOFException จ) { System.out.println (""); System.out.println("ถึงจุดสิ้นสุดของไฟล์แล้ว"); หยุดพัก; } จับ (IOException จ) { } } }}ผลลัพธ์
สวัสดี คุณเป็นอย่างไรบ้างถึงจุดสิ้นสุดของไฟล์