EOFException (End of File Exception) একটি চেকড এক্সেপশন যা ইনপুট স্ট্রিম থেকে ডেটা পড়ার সময় ফাইলের শেষে পৌঁছালে নিক্ষেপ করা হয়। এটি বিশেষ করে DataInputStream এর মেথডগুলোর সাথে ঘটে (যেমন readChar(), readInt(), readBoolean())।
উদাহরণ: EOFException ঘটা
import java.io.DataInputStream;
import java.io.FileInputStream;
public class EOFExample {
public static void main(String[] args) throws Exception {
DataInputStream dis = new DataInputStream(new FileInputStream("D:\\data.txt"));
while(true) {
char ch = dis.readChar(); // EOF-এ পৌঁছালে EOFException
System.out.print(ch);
}
}
}
রানটাইম এক্সেপশন
Hello how are you
Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readChar(Unknown Source)
at EOFExample.main(EOFExample.java:11)
EOFException হ্যান্ডলিংয়ের পদ্ধতি
পদ্ধতি ১: Try-Catch ব্লকে EOFException ক্যাচ করে ব্রেক করা
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.IOException;
public class HandlingEOF {
public static void main(String[] args) throws Exception {
DataInputStream dis = new DataInputStream(new FileInputStream("D:\\data.txt"));
while(true) {
try {
char ch = dis.readChar();
System.out.print(ch);
} catch (EOFException e) {
System.out.println("\nEnd of file reached");
break; // লুপ থেকে বের হওয়া
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
আউটপুট
Hello how are you End of file reached
পদ্ধতি ২: FileInputStream / BufferedReader ব্যবহার (EOFException এড়ানো)
FileInputStream.read() EOF-এ -1 রিটার্ন করে (এক্সেপশন নিক্ষেপ করে না)। BufferedReader.readLine() EOF-এ null রিটার্ন করে।
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadWithoutEOF {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("D:\\data.txt"))) {
String line;
while ((line = br.readLine()) != null) { // null চেক করে লুপ বন্ধ
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
সুপারিশ: টেক্সট ফাইল পড়ার জন্য BufferedReader বা Scanner ব্যবহার করুন (EOFException হ্যান্ডলিং দরকার নয়)। বাইনারি ডেটা/প্রিমিটিভ টাইপ পড়ার সময় DataInputStream ব্যবহার করলে EOFException হ্যান্ডলিং বাধ্যতামূলক।