BufferedInputStream এবং BufferedOutputStream এর ধারণা

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

281

BufferedInputStream এবং BufferedOutputStream হল Java I/O প্যাকেজের ক্লাস যা স্ট্রীম ভিত্তিক ডেটা পড়া এবং লেখার গতি বাড়াতে ব্যবহৃত হয়। এগুলি byte-based স্ট্রীম যা ফাইল বা নেটওয়ার্কের মতো বিভিন্ন ডেটা সোর্স থেকে দ্রুত ডেটা পড়তে এবং লেখতে সাহায্য করে।

BufferedInputStream এবং BufferedOutputStream বিশেষভাবে performance উন্নত করতে ব্যবহৃত হয়, কারণ এই ক্লাসগুলো ডেটা পড়া এবং লেখার সময় বাফারিং করে রাখে, যা একাধিক ছোট ছোট I/O অপারেশনের পরিবর্তে একটি বড় I/O অপারেশন করে।


BufferedInputStream এর ধারণা

BufferedInputStream ক্লাস InputStream এর একটি সাবক্লাস এবং এটি ইনপুট ডেটা পড়ার সময় buffering ব্যবহার করে। এর মাধ্যমে ফাইল বা অন্য ডেটা সোর্স থেকে ডেটা পড়তে performance বাড়ানো সম্ভব হয়, কারণ এটি একে একে বাইট পড়ার পরিবর্তে একটি বড় ব্লক পড়ে।

BufferedInputStream এর মূল বৈশিষ্ট্য:

  1. Performance Improvement:
    • ছোট ছোট I/O অপারেশনের পরিবর্তে একটি বড় বাফার থেকে ডেটা পড়ে, ফলে I/O অপারেশন দ্রুত হয়।
  2. Buffering:
    • এটি একটি বাফার তৈরি করে ডেটা ধারণ করার জন্য, যা অনেক দ্রুত পড়তে সহায়ক।
  3. Mark and Reset:
    • mark() এবং reset() মেথড দ্বারা একটি স্ট্রীমে একটি নির্দিষ্ট পজিশন মার্ক করা যায় এবং সেখান থেকে আবার ডেটা পড়া যায়।

BufferedInputStream উদাহরণ:

import java.io.*;

public class BufferedInputStreamExample {
    public static void main(String[] args) {
        try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("example.txt"))) {
            int byteData;
            while ((byteData = bis.read()) != -1) {
                System.out.print((char) byteData); // বাইটকে ক্যারেক্টারে কনভার্ট করে প্রিন্ট
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • BufferedInputStream ব্যবহার করে ফাইলের ডেটা দ্রুত পড়া হচ্ছে। read() মেথড ব্যবহার করে একে একে বাইট পড়া হচ্ছে।
  • BufferedInputStream একটি bigger buffer থেকে ডেটা পড়ে, যা প্রতি I/O অপারেশনে performance বৃদ্ধি করে।

BufferedOutputStream এর ধারণা

BufferedOutputStream ক্লাস OutputStream এর একটি সাবক্লাস এবং এটি আউটপুট ডেটা লেখার সময় buffering ব্যবহার করে। BufferedOutputStream ফাইল বা অন্য গন্তব্যে ডেটা লেখার জন্য বাফার ব্যবহার করে, ফলে ডেটা লেখা আরও দ্রুত হয়।

BufferedOutputStream এর মূল বৈশিষ্ট্য:

  1. Performance Improvement:
    • ছোট ছোট ডেটা লেখার পরিবর্তে একটি বড় বাফারে ডেটা লেখা হয়, যা I/O অপারেশন দ্রুত করে।
  2. Buffering:
    • এটি একটি বাফার তৈরি করে আউটপুট ডেটা ধারণ করার জন্য, যাতে একসাথে ডেটা লেখা যায়।
  3. flush() Method:
    • flush() মেথড ব্যবহার করে বাফারের মধ্যে জমে থাকা ডেটা গন্তব্যে পাঠানো যায়। এটি গুরুত্বপূর্ণ যখন আপনি নিশ্চিত হতে চান যে সমস্ত ডেটা গন্তব্যে পাঠানো হয়েছে।

BufferedOutputStream উদাহরণ:

import java.io.*;

public class BufferedOutputStreamExample {
    public static void main(String[] args) {
        String data = "This is an example of BufferedOutputStream.";

        try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("output.txt"))) {
            byte[] byteData = data.getBytes();
            bos.write(byteData); // ডেটা ফাইলে লেখা
            bos.flush(); // বাফারের ডেটা গন্তব্যে পাঠানো
            System.out.println("Data written to output.txt successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • BufferedOutputStream ব্যবহার করে ফাইলে ডেটা লেখা হচ্ছে। ডেটা byte[] আকারে প্রস্তুত করে বাফারে লেখা হচ্ছে, এবং পরে flush() মেথড ব্যবহার করে সমস্ত ডেটা ফাইলে পাঠানো হচ্ছে।

আউটপুট:

Data written to output.txt successfully.

BufferedInputStream এবং BufferedOutputStream এর সুবিধা:

  1. ডেটা পড়া এবং লেখার গতি বৃদ্ধি:
    • BufferedInputStream এবং BufferedOutputStream ক্লাসগুলো ছোট I/O অপারেশনের পরিবর্তে বড় ব্লক ব্যবহার করে, যা ডেটা পড়া এবং লেখার গতি বৃদ্ধি করে।
  2. বাফারিং:
    • বাফারিং সিস্টেম ব্যবহার করে কম I/O অপারেশন সম্পাদন করা হয়, যার ফলে পারফরম্যান্স উন্নত হয়।
  3. নেটওয়ার্ক বা বড় ফাইলের জন্য উপযুক্ত:
    • যেহেতু এরা buffering ব্যবহার করে, তাই নেটওয়ার্ক বা বড় ফাইলের ক্ষেত্রে performance অনেকটাই উন্নত হয়।
  4. Memory Management:
    • বড় ডেটা সেটগুলিকে একত্রে প্রক্রিয়া করা আরও কার্যকর হয়।

BufferedInputStream এবং BufferedOutputStream এর সীমাবদ্ধতা:

  1. Memory Consumption:
    • বাফারিংয়ের কারণে কিছু পরিমাণ মেমরি খরচ হতে পারে, বিশেষ করে বড় ডেটা ব্যবস্থাপনা করতে হলে।
  2. No Direct Support for Object Serialization:
    • এটি শুধুমাত্র byte-based I/O সাপোর্ট করে, অর্থাৎ এটি object serialization বা text-based I/O এর জন্য উপযুক্ত নয়। এটি ObjectInputStream এবং ObjectOutputStream এর সাথে মিলে কাজ করতে পারে।

  • BufferedInputStream এবং BufferedOutputStream Java I/O প্যাকেজের গুরুত্বপূর্ণ ক্লাস যা performance improvement এবং efficiency জন্য ব্যবহৃত হয়।
  • BufferedInputStream ফাইল বা সোর্স থেকে ডেটা দ্রুত পড়তে সাহায্য করে, এবং BufferedOutputStream ডেটা দ্রুত গন্তব্যে লেখার জন্য ব্যবহৃত হয়।
  • Buffered Streams ছোট I/O অপারেশনের পরিবর্তে বড় ব্লক ব্যবহার করে, যার ফলে কর্মক্ষমতা বৃদ্ধি পায়।
  • এগুলি byte-based I/O ক্লাস, তাই text-based I/O এর জন্য Reader/Writer ক্লাস ব্যবহার করা হয়।

এই ক্লাসগুলো ব্যবহারের মাধ্যমে আপনার ফাইল এবং ডেটা স্ট্রিমের সাথে কাজ করা আরও দ্রুত এবং কার্যকরী হতে পারে।

Content added By
Promotion

Are you sure to start over?

Loading...