Performance Optimization এর জন্য Buffered Streams এর ব্যবহার

BufferedInputStream এবং BufferedOutputStream - জাভা আইও (Java.io Package) - Java Technologies

278

Buffered Streams হল Java I/O সিস্টেমের একটি গুরুত্বপূর্ণ অংশ যা ফাইল পড়া এবং লেখা অপারেশনগুলিকে দ্রুত এবং আরও কার্যকরী করতে সাহায্য করে। যখন আপনি একটি ফাইল বা ডেটা সোর্স থেকে ডেটা পড়ছেন বা লিখছেন, তখন যদি প্রতিটি I/O অপারেশন সরাসরি ডিস্ক বা স্ট্রিমে পাঠানো হয়, তাহলে এটি খুব ধীর গতিতে কাজ করতে পারে। Buffered Streams এই সমস্যা সমাধান করে।

Buffered Streams ডেটা একটি বাফারে সংরক্ষণ করে এবং পরে একত্রে সেই ডেটা প্রক্রিয়া করে, যা I/O অপারেশনগুলিকে আরও দ্রুত এবং কার্যকরী করে তোলে। Buffered Streams শুধুমাত্র Byte Streams এবং Character Streams এর জন্য পাওয়া যায়, এবং এটি BufferedInputStream, BufferedOutputStream, BufferedReader, এবং BufferedWriter ক্লাসের মধ্যে উপলব্ধ।


Buffered Streams এর মাধ্যমে Performance Optimization

Buffered Streams সাধারণত ডেটার ছোট ছোট অংশ পাঠানোর পরিবর্তে বড় আকারে ডেটা পাঠায় এবং লেখে। এটি I/O অপারেশনগুলির কার্যকারিতা অনেক গুণ বৃদ্ধি করে।

BufferedInputStream এবং BufferedOutputStream:

  • BufferedInputStream: ফাইল থেকে বাইনারি ডেটা পড়তে ব্যবহৃত হয়। এটি ডেটাকে একটি বাফারে পড়ে এবং একত্রে সেগুলি প্রসেস করে।
  • BufferedOutputStream: বাইনারি ডেটা লেখার জন্য ব্যবহৃত হয়। এটি একটি বাফার তৈরি করে এবং একত্রে ডেটা লেখে, যা পারফরম্যান্স বাড়ায়।

BufferedReader এবং BufferedWriter:

  • BufferedReader: টেক্সট ডেটা পড়ার জন্য ব্যবহৃত হয়। এটি বড় আকারের ফাইল বা স্ট্রিম দ্রুত পড়তে সহায়ক।
  • BufferedWriter: টেক্সট ডেটা লেখার জন্য ব্যবহৃত হয়। এটি ডেটা বাফারে রেখে দ্রুত লেখার প্রক্রিয়া সম্পাদন করে।

Buffered Streams ব্যবহারের উদাহরণ

1. BufferedInputStream এবং BufferedOutputStream ব্যবহার করে ফাইল কপি করা

import java.io.*;

public class BufferedStreamExample {
    public static void main(String[] args) {
        try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("source.txt"));
             BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("destination.txt"))) {
            
            int byteData;
            while ((byteData = bis.read()) != -1) {
                bos.write(byteData); // copying byte by byte
            }
            System.out.println("File copied successfully using BufferedInputStream and BufferedOutputStream.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • BufferedInputStream ব্যবহার করে source.txt ফাইল থেকে ডেটা পড়া হচ্ছে এবং BufferedOutputStream ব্যবহার করে destination.txt ফাইলে ডেটা লেখা হচ্ছে।
  • Buffered Streams ডেটা দ্রুত পড়তে এবং লিখতে সহায়ক হয়, কারণ এটি ডেটা বাফারে রেখে একত্রে প্রক্রিয়া করে।

আউটপুট:

File copied successfully using BufferedInputStream and BufferedOutputStream.

2. BufferedReader এবং BufferedWriter ব্যবহার করে ফাইল পড়া এবং লেখা

import java.io.*;

public class BufferedReaderWriterExample {
    public static void main(String[] args) {
        // BufferedReader দিয়ে ফাইল থেকে ডেটা পড়া
        try (BufferedReader br = new BufferedReader(new FileReader("source.txt"));
             BufferedWriter bw = new BufferedWriter(new FileWriter("destination.txt"))) {

            String line;
            while ((line = br.readLine()) != null) {
                bw.write(line); // line by line copy
                bw.newLine();    // writing a new line in the destination file
            }
            System.out.println("File copied successfully using BufferedReader and BufferedWriter.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • BufferedReader ব্যবহার করে ফাইল থেকে টেক্সট লাইন-by-line পড়া হচ্ছে এবং BufferedWriter ব্যবহার করে সেই টেক্সট ফাইলটি destination.txt তে লেখা হচ্ছে।

আউটপুট:

File copied successfully using BufferedReader and BufferedWriter.

Buffered Streams এর সুবিধা

  1. Performance Improvement:
    • Buffered Streams ছোট আকারে ডেটা পাঠানোর পরিবর্তে বড় আকারে ডেটা পাঠায়, যা I/O অপারেশনগুলিকে দ্রুত করে।
    • এটি বিশেষভাবে বড় আকারের ফাইল বা ডেটা প্রসেসিংয়ে কার্যকরী।
  2. Reduced Disk I/O:
    • প্রতিটি I/O অপারেশনকে একত্রে প্রসেস করার মাধ্যমে ডিস্ক I/O কমানো হয়। এতে কম ডিস্ক অ্যাক্সেস এবং বেশি মেমরি ব্যবহার হয়, যা পারফরম্যান্সে উন্নতি আনে।
  3. Ease of Use:
    • Buffered Streams ব্যবহারে কোড আরও সহজ এবং পরিষ্কার হয়। আপনি byte-by-byte অপারেশন করার পরিবর্তে একটি বড় বাফারে ডেটা প্রক্রিয়া করতে পারেন।
  4. Efficient for Large Data:
    • এটি বড় আকারের ডেটা প্রসেসিংয়ের জন্য উপযুক্ত, কারণ এটি ডেটাকে একটি বাফারে রাখে এবং batch processing এর মাধ্যমে ডেটা প্রক্রিয়া করে।

Buffered Streams এর Performance Optimization-এ ব্যবহার:

Example 1: BufferedReader vs FileReader Performance

FileReader সাধারণত ছোট ফাইল পড়ার জন্য ব্যবহৃত হয়। কিন্তু, যখন ফাইল বড় হয়, BufferedReader দ্রুত পড়ার জন্য উপযুক্ত, কারণ এটি বড় আকারে ডেটা একত্রে পড়ে এবং একাধিক I/O অপারেশন করতে সহায়ক।

Example 2: BufferedOutputStream vs FileOutputStream Performance

যখন আপনি FileOutputStream ব্যবহার করেন, প্রতিটি বাইট লিখতে একাধিক I/O অপারেশন ঘটবে, যা ধীর গতির হতে পারে। কিন্তু, BufferedOutputStream ব্যবহার করলে এটি বাফারে ডেটা রাখে এবং একত্রে লেখা হয়, যার ফলে কম I/O অপারেশন ঘটে এবং পারফরম্যান্স উন্নত হয়।


  • Buffered Streams I/O অপারেশনগুলির পারফরম্যান্সে বড় আকারে ডেটা প্রসেসিং এবং কম I/O অপারেশন এর মাধ্যমে দ্রুততা আনে।
  • BufferedReader, BufferedWriter, BufferedInputStream, এবং BufferedOutputStream Java I/O সিস্টেমের এমন ক্লাস যা ফাইল পড়া এবং লেখা কার্যক্রম দ্রুত এবং কার্যকরী করে তোলে।
  • Buffered Streams খুবই কার্যকরী যখন আপনি বড় আকারের ডেটা বা ফাইল প্রসেস করতে চান এবং পারফরম্যান্সের উন্নতি করতে চান।
Content added By
Promotion

Are you sure to start over?

Loading...