Buffered Streams হল I/O (Input/Output) অপারেশনগুলোর একটি গুরুত্বপূর্ণ অংশ, যা ডেটার প্রবাহ (streaming) কার্যক্রম দ্রুত এবং কার্যকরী করতে ব্যবহৃত হয়। Buffered Streams ব্যবহার করা হয় যখন আপনাকে অনেক পরিমাণ ডেটা একসাথে পড়া বা লেখা দরকার, এবং ডেটার আংশিক অংশের জন্য বারবার ডিস্ক অ্যাক্সেস করা কমাতে চান। Buffered I/O স্ট্রিমগুলি সাধারণত ডেটা ব্লক আকারে মেমরিতে রাখে, যা ডিস্ক অ্যাক্সেসের সংখ্যা কমিয়ে দেয় এবং এর ফলে I/O কার্যাবলী দ্রুত হয়।
Apache Commons IO লাইব্রেরি Buffered Streams এর সাথে কাজ করতে বেশ কিছু ইউটিলিটি ক্লাস সরবরাহ করে, যা ফাইল এবং স্ট্রিমের মধ্যে দ্রুত ডেটা ট্রান্সফার করতে সহায়তা করে।
Buffered Streams হল স্ট্রিম অপারেশনগুলির একটি বিশেষ পদ্ধতি যেখানে ডেটা ছোট আকারে নয়, বরং একটি নির্দিষ্ট সাইজের বাফারে (buffer) জমা হয় এবং তারপর একবারে ডিস্ক থেকে বা ডিস্কে লেখা হয়। এর ফলে:
Buffered Streams এর মাধ্যমে ডেটা খোলার সময় buffered read/write অপারেশন করা যায়, যা সাধারণ স্ট্রিম অপারেশন থেকে অনেক দ্রুত। সাধারণত BufferedReader, BufferedWriter, BufferedInputStream, এবং BufferedOutputStream ক্লাসগুলো Java IO তে ব্যবহৃত হয়।
Apache Commons IO লাইব্রেরি Buffered Streams এর ব্যবহারকে আরও সহজ এবং কার্যকরী করে তোলে, যেখানে IOUtils এবং অন্যান্য ক্লাসের মাধ্যমে আপনি এই স্ট্রিমগুলির কাজ সহজে পরিচালনা করতে পারেন।
এখানে আমরা একটি BufferedInputStream এবং BufferedOutputStream ব্যবহার করব একটি ফাইল থেকে ডেটা পড়তে এবং অন্য ফাইলে লিখতে।
import org.apache.commons.io.IOUtils;
import java.io.*;
public class BufferedStreamExample {
public static void main(String[] args) {
File inputFile = new File("source.txt");
File outputFile = new File("destination.txt");
try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(inputFile));
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile))) {
// ডেটা কপি করা: BufferedInputStream থেকে BufferedOutputStream এ
IOUtils.copy(inputStream, outputStream);
System.out.println("ফাইল কপি সফল!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
ফাইল কপি সফল!
BufferedReader এবং BufferedWriter পাঠ্য ফাইলের জন্য ব্যবহৃত হয়, যেখানে লাইনের আকারে ডেটা পড়া এবং লেখা হয়। এই উদাহরণে আমরা একটি টেক্সট ফাইল থেকে ডেটা পড়ব এবং অন্য ফাইলে লিখব।
import org.apache.commons.io.IOUtils;
import java.io.*;
public class BufferedReaderWriterExample {
public static void main(String[] args) {
File inputFile = new File("source.txt");
File outputFile = new File("destination.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {
// ইনপুট ফাইল থেকে লাইন পড়া এবং আউটপুট ফাইলে লেখা
String line;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine(); // নতুন লাইন যুক্ত করা
}
System.out.println("টেক্সট কপি সফল!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
টেক্সট কপি সফল!
IOUtils ক্লাস Apache Commons IO লাইব্রেরির একটি জনপ্রিয় ক্লাস যা স্ট্রিম কপি করার জন্য ব্যবহৃত হয়। IOUtils.copy() মেথডটি ফাইল বা স্ট্রিম থেকে স্ট্রিমে ডেটা কপি করতে ব্যবহৃত হয় এবং এটি Buffered Streams সহ খুব ভাল কাজ করে।
import org.apache.commons.io.IOUtils;
import java.io.*;
public class IOUtilsBufferedExample {
public static void main(String[] args) {
File inputFile = new File("source.txt");
File outputFile = new File("destination.txt");
try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(inputFile));
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(outputFile))) {
// IOUtils.copy() ব্যবহার করে স্ট্রিম কপি করা
IOUtils.copy(inputStream, outputStream);
System.out.println("Buffered Stream এর মাধ্যমে ফাইল কপি সফল!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে:
আউটপুট:
Buffered Stream এর মাধ্যমে ফাইল কপি সফল!
Buffered Streams হল একটি কার্যকরী পদ্ধতি যা Java IO এবং Apache Commons IO লাইব্রেরির মাধ্যমে I/O অপারেশনগুলিকে দ্রুত এবং কার্যকরী করে তোলে। BufferedInputStream, BufferedOutputStream, BufferedReader, এবং BufferedWriter ক্লাসগুলি স্ট্রিম থেকে বা স্ট্রিমে ডেটা পাঠানোর সময় পারফরম্যান্স উন্নত করতে সাহায্য করে। Apache Commons IO লাইব্রেরি IOUtils.copy() মেথডের মাধ্যমে স্ট্রিম কপি করার প্রক্রিয়াকে আরও সহজ করে তোলে।
common.read_more