FileReader এবং FileWriter ক্লাসগুলি character streams এর অংশ, যা টেক্সট ডেটা (যেমন .txt ফাইল) পড়া এবং লেখা করার জন্য ব্যবহৃত হয়। FileReader ফাইল থেকে টেক্সট ডেটা পড়তে ব্যবহৃত হয়, এবং FileWriter ফাইলে টেক্সট ডেটা লেখার জন্য ব্যবহৃত হয়।
এই ক্লাসগুলি byte streams এর তুলনায় টেক্সট ডেটা এর জন্য বেশি উপযুক্ত, কারণ তারা Unicode চরিত্র এনকোডিং সাপোর্ট করে এবং character encoding স্বয়ংক্রিয়ভাবে পরিচালনা করে।
FileReader এবং FileWriter এর ভূমিকা:
- FileReader: এটি ফাইল থেকে টেক্সট ডেটা পড়তে ব্যবহৃত হয়। এটি Character Stream এর অংশ, তাই এটি বাইনারি ডেটার পরিবর্তে টেক্সট ডেটা পড়তে সক্ষম।
- FileWriter: এটি ফাইলে টেক্সট ডেটা লেখার জন্য ব্যবহৃত হয়। এটি Character Stream এর অংশ এবং বাইনারি ডেটার পরিবর্তে টেক্সট ডেটা লেখার জন্য উপযুক্ত।
FileReader এর মেথড:
- read(): একটি ক্যারেক্টার পড়ে।
- read(char[] cbuf): একটি ক্যারেক্টার অ্যারে থেকে ডেটা পড়ে।
- close(): ফাইল স্ট্রীম বন্ধ করে।
FileWriter এর মেথড:
- write(int c): একটি ক্যারেক্টার লেখে।
- write(char[] cbuf): একটি ক্যারেক্টার অ্যারে লেখে।
- close(): ফাইল স্ট্রীম বন্ধ করে।
FileReader এবং FileWriter এর উদাহরণ
১. FileReader উদাহরণ: ফাইল থেকে টেক্সট ডেটা পড়া
এই উদাহরণে, FileReader ব্যবহার করে একটি ফাইল থেকে টেক্সট ডেটা পড়া হবে।
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
// FileReader ব্যবহার করে ফাইল খুলুন
try (FileReader fr = new FileReader("input.txt")) {
int charData;
while ((charData = fr.read()) != -1) { // ফাইল থেকে একটি ক্যারেক্টার পড়া
System.out.print((char) charData); // ক্যারেক্টার আউটপুট
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
FileReaderব্যবহার করে input.txt ফাইল থেকে ক্যারেক্টার আকারে ডেটা পড়া হচ্ছে।read()মেথডটি ফাইল থেকে একটি ক্যারেক্টার পড়ে, এবং আমরাSystem.out.print()দ্বারা সেই ক্যারেক্টার প্রিন্ট করি।
আউটপুট (যদি input.txt এ কিছু ডেটা থাকে):
Hello, this is a sample file content.
২. FileWriter উদাহরণ: ফাইলে টেক্সট ডেটা লেখা
এই উদাহরণে, FileWriter ব্যবহার করে একটি ফাইলে টেক্সট ডেটা লেখা হবে।
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample {
public static void main(String[] args) {
String data = "This is a test output."; // লেখার জন্য ডেটা
try (FileWriter fw = new FileWriter("output.txt")) {
fw.write(data); // String থেকে ডেটা ফাইলে লেখা
System.out.println("Data written to file successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
FileWriterব্যবহার করে output.txt ফাইলে একটি স্ট্রিং লেখার কাজ করা হয়েছে।write()মেথডটি ফাইলে স্ট্রিং লেখা করছে, যা পরে কনসোলে মেসেজ হিসেবে প্রদর্শিত হবে।
আউটপুট:
Data written to file successfully.
৩. FileReader এবং FileWriter ব্যবহার করে ফাইল কপি করা
এখন, আমরা FileReader এবং FileWriter ব্যবহার করে একটি ফাইলের কন্টেন্ট অন্য একটি ফাইলে কপি করব।
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileCopyExample {
public static void main(String[] args) {
try (FileReader fr = new FileReader("source.txt");
FileWriter fw = new FileWriter("destination.txt")) {
int charData;
while ((charData = fr.read()) != -1) { // ফাইল থেকে একটি ক্যারেক্টার পড়া
fw.write(charData); // destination ফাইলে লেখা
}
System.out.println("File copied successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
FileReaderব্যবহার করে source.txt ফাইল থেকে ডেটা পড়া হচ্ছে এবংFileWriterব্যবহার করে destination.txt ফাইলে সেই ডেটা লেখা হচ্ছে।fr.read()মেথডটি ফাইল থেকে একটি ক্যারেক্টার পড়ে এবংfw.write()মেথডটি সেই ক্যারেক্টার ফাইলে লেখে।
আউটপুট:
File copied successfully.
FileReader এবং FileWriter এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- Character Data Processing: FileReader এবং FileWriter টেক্সট ডেটা প্রক্রিয়া করার জন্য উপযুক্ত।
- Unicode Support: টেক্সট ডেটা পড়ার এবং লেখার সময় Unicode সাপোর্ট করে।
- সোজা এবং কার্যকরী: এটি ফাইলের সাথে সহজে কাজ করার একটি সরল উপায়।
সীমাবদ্ধতা:
- Byte Data Handling: বাইনারি ডেটার জন্য FileInputStream এবং FileOutputStream বেশি উপযুক্ত। FileReader এবং FileWriter শুধুমাত্র টেক্সট ডেটার জন্য উপযুক্ত।
- Performance: বড় ডেটা প্রক্রিয়াকরণের ক্ষেত্রে BufferedReader এবং BufferedWriter এর তুলনায় কিছুটা ধীর হতে পারে, যেহেতু এটি বাফারিং ব্যবহার করে না।
- FileReader এবং FileWriter Java-র character stream ক্লাস যা ফাইলের টেক্সট ডেটা পড়া এবং লেখার জন্য ব্যবহৃত হয়।
- FileReader ক্লাসটি টেক্সট ফাইলের জন্য আদর্শ এবং FileWriter টেক্সট ফাইলের মধ্যে ডেটা লেখার জন্য উপযুক্ত।
- FileReader এবং FileWriter সহজেই ফাইলের টেক্সট ডেটা পড়তে এবং লেখতে সাহায্য করে, তবে byte streams (যেমন FileInputStream এবং FileOutputStream) বাইনারি ডেটার জন্য বেশি কার্যকরী।
Read more