BufferedReader এবং BufferedWriter জাভায় Character Streams এর মধ্যে পড়ে এবং টেক্সট ডেটা পড়া ও লেখার জন্য ব্যবহৃত হয়। এগুলি buffering প্রক্রিয়া ব্যবহার করে ডেটা পড়া এবং লেখা দ্রুততর এবং কার্যকরী করে তোলে।
BufferedReader সাধারণত ফাইল থেকে এক লাইনে ডেটা পড়তে ব্যবহার হয়, এবং BufferedWriter ফাইল বা আউটপুট স্ট্রিমে দ্রুত টেক্সট লেখা নিশ্চিত করতে ব্যবহৃত হয়।
এই ক্লাস দুটি I/O Performance অপটিমাইজেশনের জন্য গুরুত্বপূর্ণ, কারণ তারা ডিস্ক থেকে ডেটা একাধিক ছোট প্যাকেটের পরিবর্তে বড় আকারে পড়তে সক্ষম।
BufferedReader এবং BufferedWriter এর মূল বৈশিষ্ট্য
BufferedReader: এক লাইনে পড়ার জন্য ব্যবহৃত হয় এবং একটি বাফারে ডেটা রাখে, যাতে বারবার ডিস্ক অ্যাক্সেস না করতে হয়।BufferedWriter: দ্রুত টেক্সট লেখার জন্য ব্যবহৃত হয় এবং একটি বাফারে লেখে, যা ডিস্কের সাথে কম I/O অপারেশন করতে সহায়ক।
BufferedReader উদাহরণ
BufferedReader ব্যবহার করে ফাইল থেকে লাইন ধরে লাইন পড়া যেতে পারে।
BufferedReader Example - ফাইল থেকে ডেটা পড়া
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
// ফাইল পাথ
String filePath = "example.txt";
// BufferedReader ব্যবহার করে ফাইল থেকে ডেটা পড়া
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
// প্রতিটি লাইন পড়া
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
Sample Input File (example.txt):
Hello, World!
Welcome to Java Programming.
BufferedReader Example.
আউটপুট:
Hello, World!
Welcome to Java Programming.
BufferedReader Example.
BufferedWriter উদাহরণ
BufferedWriter ব্যবহার করে দ্রুত টেক্সট ফাইল লেখার কাজ করা যায়।
BufferedWriter Example - ফাইল লেখার উদাহরণ
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BufferedWriterExample {
public static void main(String[] args) {
// ফাইল পাথ
String filePath = "output.txt";
// BufferedWriter ব্যবহার করে ফাইলে ডেটা লেখা
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
writer.write("Hello, World!");
writer.newLine();
writer.write("Welcome to Java Programming.");
writer.newLine();
writer.write("BufferedWriter Example.");
System.out.println("Data written to file successfully.");
} catch (IOException e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
আউটপুট ফাইল (output.txt):
Hello, World!
Welcome to Java Programming.
BufferedWriter Example.
BufferedReader এবং BufferedWriter এর সাথে Tuples ব্যবহার
ফাইল থেকে ডেটা পড়ে Tuples এ সংরক্ষণ করার জন্য BufferedReader ব্যবহার করা এবং Tuples থেকে ফাইল লিখতে BufferedWriter ব্যবহার করা যেতে পারে।
Tuples ব্যবহার করে ফাইল থেকে Multiple Values ফেচ করা
উদাহরণ:
import org.javatuples.Pair;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class BufferedReaderWithTuples {
public static void main(String[] args) {
String filePath = "data.txt";
// Tuples List to store data
List<Pair<String, Integer>> dataList = new ArrayList<>();
// BufferedReader ব্যবহার করে ফাইল থেকে ডেটা পড়া
try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = reader.readLine()) != null) {
String[] parts = line.split(",");
if (parts.length == 2) {
String name = parts[0].trim();
Integer age = Integer.parseInt(parts[1].trim());
dataList.add(Pair.with(name, age)); // Tuples এ সংরক্ষণ
}
}
} catch (IOException e) {
e.printStackTrace();
}
// Tuples এর ডেটা প্রিন্ট করা
for (Pair<String, Integer> data : dataList) {
System.out.println("Name: " + data.getValue0() + ", Age: " + data.getValue1());
}
}
}
Sample Input File (data.txt):
Alice, 25
Bob, 30
Charlie, 35
আউটপুট:
Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 35
BufferedReader এবং BufferedWriter এর Performance Optimization
- BufferedReader এবং BufferedWriter ব্যবহার করার মাধ্যমে I/O Performance উল্লেখযোগ্যভাবে বৃদ্ধি পায়। এরা ডেটাকে বড় আকারে পুঞ্জীভূত করে স্ট্রিম থেকে পড়তে এবং লিখতে সক্ষম, যার ফলে ডিস্ক থেকে একাধিক ছোট প্যাকেটের পরিবর্তে একটি বড় প্যাকেট ট্রান্সফার করা হয়।
- BufferedWriter ব্যবহারের মাধ্যমে একাধিক
write()অপারেশন কমিয়ে এনে ডিস্কে কম I/O অপারেশন করা হয়।
সাধারণ Best Practices:
try-with-resourcesব্যবহার করুন:- স্ট্রিম বা রিডার/রাইটার ব্যবহারের পর অবশ্যই সেগুলি বন্ধ করার জন্য
try-with-resourcesব্যবহার করুন।
- স্ট্রিম বা রিডার/রাইটার ব্যবহারের পর অবশ্যই সেগুলি বন্ধ করার জন্য
- Data Buffering ব্যবহার করুন:
BufferedReaderএবংBufferedWriterব্যবহার করুন, বিশেষত বড় আকারের ফাইল পড়তে এবং লিখতে।
- Error Handling নিশ্চিত করুন:
IOExceptionহ্যান্ডেল করতে সতর্ক থাকুন এবং প্রয়োজনেtry-catchব্লক ব্যবহার করুন।
BufferedReader এবং BufferedWriter ব্যবহার করে I/O Performance অপটিমাইজ করা সম্ভব, কারণ এগুলি কম I/O অপারেশনে দ্রুত ডেটা পড়তে এবং লিখতে সাহায্য করে। Tuples ব্যবহার করে ডেটা সংরক্ষণ এবং প্রসেসিং সহজ হয়। এই প্রযুক্তি সমন্বয় করে আপনার ফাইল পরিচালনা এবং ডেটা প্রক্রিয়া দ্রুত এবং কার্যকরী করা যায়।
Read more