Java I/O প্যাকেজে টেক্সট ডেটা পড়া এবং লেখা করার জন্য দুটি গুরুত্বপূর্ণ ক্লাস রয়েছে: FileReader এবং FileWriter। এগুলি Character Streams এর অন্তর্গত, অর্থাৎ এগুলি Unicode character data পড়া এবং লেখার জন্য ডিজাইন করা হয়েছে। এগুলি Byte Streams এর তুলনায় টেক্সট ডেটা পরিচালনার জন্য বেশি উপযুক্ত।
FileReader এবং FileWriter এর ভূমিকা:
- FileReader: এটি Character Stream এর অংশ, যা ফাইল থেকে টেক্সট ডেটা পড়ে।
- FileWriter: এটি Character Stream এর অংশ, যা টেক্সট ডেটা ফাইলে লেখার জন্য ব্যবহৃত হয়।
এই ক্লাসগুলো text files (যেমন .txt, .csv, .xml) এর জন্য ব্যবহৃত হয় এবং byte streams থেকে আলাদা, কারণ এগুলি Unicode characters সরাসরি পড়তে এবং লেখতে পারে।
1. FileReader (ফাইল থেকে টেক্সট ডেটা পড়া)
FileReader ক্লাসটি Character Stream এর একটি সদস্য এবং এটি টেক্সট ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি FileInputStream এর মতো ফাইল থেকে ডেটা পড়ে, তবে এটি বাইনারি ডেটার পরিবর্তে টেক্সট ডেটা পড়তে সক্ষম।
FileReader উদাহরণ (ফাইল থেকে টেক্সট ডেটা পড়া):
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("example.txt")) {
int charData;
while ((charData = fr.read()) != -1) { // ফাইল থেকে একটি ক্যারেক্টার পড়া
System.out.print((char) charData); // ক্যারেক্টার প্রিন্ট করা
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- FileReader ব্যবহার করে example.txt ফাইল থেকে টেক্সট ডেটা পড়া হচ্ছে।
read()মেথডটি প্রতিবার একটি ক্যারেক্টার পড়ে এবং এটি char হিসেবে কনভার্ট করে প্রিন্ট করা হচ্ছে।
2. FileWriter (ফাইলে টেক্সট ডেটা লেখা)
FileWriter ক্লাসটি Character Stream এর একটি সদস্য এবং এটি ফাইলে টেক্সট ডেটা লেখার জন্য ব্যবহৃত হয়। এটি FileOutputStream এর মতো ফাইলে ডেটা লেখে, তবে এটি বাইনারি ডেটার পরিবর্তে টেক্সট ডেটা লেখতে সক্ষম।
FileWriter উদাহরণ (ফাইলে টেক্সট ডেটা লেখা):
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample {
public static void main(String[] args) {
String data = "Hello, this is a test file!";
try (FileWriter fw = new FileWriter("output.txt")) {
fw.write(data); // টেক্সট ডেটা ফাইলে লেখা
System.out.println("Data written to file successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- FileWriter ব্যবহার করে output.txt ফাইলে টেক্সট ডেটা লেখা হচ্ছে।
- write() মেথডটি স্ট্রিং ডেটা ফাইলে লেখার জন্য ব্যবহার করা হচ্ছে।
3. BufferedReader এবং BufferedWriter (ফাইল থেকে টেক্সট ডেটা পড়া এবং লেখা)
BufferedReader এবং BufferedWriter টেক্সট ডেটা পড়া এবং লেখার জন্য আরও কার্যকরী উপায় প্রদান করে। এগুলি ফাইলের মধ্যে একে একে ডেটা পড়া বা লেখা পরিবর্তে একটি বাফার ব্যবহার করে বড় আকারের ডেটা দ্রুত পড়তে বা লেখতে সাহায্য করে।
BufferedReader এবং BufferedWriter উদাহরণ:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedReaderWriterExample {
public static void main(String[] args) {
// BufferedReader এবং BufferedWriter ব্যবহার করে টেক্সট ডেটা পড়া এবং লেখা
try (BufferedReader br = new BufferedReader(new FileReader("input.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {
String line;
while ((line = br.readLine()) != null) {
bw.write(line); // ফাইলের লাইন লেখা
bw.newLine(); // নতুন লাইন যোগ করা
}
System.out.println("Data copied from input.txt to output.txt using BufferedStreams.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- BufferedReader ব্যবহার করে input.txt ফাইল থেকে একটি লাইন একে একে পড়া হচ্ছে।
- BufferedWriter ব্যবহার করে output.txt ফাইলে সেই লাইনগুলি লেখা হচ্ছে এবং
newLine()মেথড দ্বারা নতুন লাইন যোগ করা হচ্ছে।
4. FileReader এবং FileWriter এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- টেক্সট ডেটা প্রক্রিয়া: FileReader এবং FileWriter টেক্সট ডেটা পড়তে এবং লেখতে অত্যন্ত উপযুক্ত।
- Unicode সমর্থন: এটি Unicode character streams এর মাধ্যমে টেক্সট ডেটা সহজে পড়তে এবং লেখতে সহায়ক।
- সহজ ব্যবহার: এই ক্লাস দুটি সাধারণত ছোট এবং মাঝারি আকারের টেক্সট ফাইলের জন্য কার্যকরী।
- Platform Independent: FileReader এবং FileWriter প্ল্যাটফর্ম নিরপেক্ষ, অর্থাৎ এগুলি Windows, Linux, এবং Mac সহ বিভিন্ন প্ল্যাটফর্মে কাজ করবে।
সীমাবদ্ধতা:
- বাইনারি ডেটার জন্য উপযুক্ত নয়: FileReader এবং FileWriter কেবল text files এর জন্য উপযুক্ত। বাইনারি ফাইলের জন্য FileInputStream এবং FileOutputStream ব্যবহার করা উচিত।
- মেমরি ব্যবস্থাপনা: বড় ফাইল পড়তে গেলে BufferedReader এবং BufferedWriter ক্লাস ব্যবহার করা উচিত, কারণ FileReader এবং FileWriter বড় ফাইলের জন্য কার্যকরী নয়।
- এনকোডিং ইস্যু: FileReader এবং FileWriter ক্লাসের মাধ্যমে ডেটা পড়া বা লেখা default encoding ব্যবহার করে, যা কিছু ক্ষেত্রে সমস্যা তৈরি করতে পারে। এর জন্য InputStreamReader এবং OutputStreamWriter ব্যবহার করা যেতে পারে।
Java I/O প্যাকেজের FileReader এবং FileWriter ক্লাসগুলি text file handling এর জন্য অত্যন্ত কার্যকরী। এগুলি Character Stream হিসেবে কাজ করে এবং text data পড়তে এবং লেখতে সহায়ক। তবে, যখন বাইনারি ডেটা (যেমন ইমেজ, ভিডিও) নিয়ে কাজ করতে হয়, তখন Byte Streams (যেমন FileInputStream এবং FileOutputStream) ব্যবহার করা উচিত।
- BufferedReader এবং BufferedWriter ব্যবহার করে বড় ফাইল বা ডেটা দ্রুত পড়া এবং লেখা সম্ভব, কারণ এই ক্লাসগুলি buffering ব্যবহার করে।
Read more