উদাহরণ সহ Buffered Streams এর ব্যবহার

BufferedInputStream এবং BufferedOutputStream - জাভা টাপল (Java Tuples) - Java Technologies

348

Buffered Streams Java I/O (Input/Output) ক্লাসগুলির একটি গুরুত্বপূর্ণ অংশ, যা ডেটা পড়া এবং লেখা অপারেশনগুলোকে আরো দ্রুত এবং কার্যকর করে তোলে। Buffered Streams মূলত ডেটাকে বাফার করে, যাতে প্রতি I/O অপারেশনে ডিস্ক বা নেটওয়ার্ক এক্সেসের পরিবর্তে বাফার থেকে দ্রুত ডেটা পড়া বা লেখা যায়। এতে করে কর্মক্ষমতা উন্নত হয়, বিশেষ করে বড় ডেটা বা ফাইলের ক্ষেত্রে।

Buffered Streams এর ভূমিকা

  • BufferedInputStream এবং BufferedOutputStream হল InputStream এবং OutputStream এর subclass, যা ইনপুট এবং আউটপুট স্ট্রিমের জন্য বাফারিং সুবিধা প্রদান করে।
  • BufferedReader এবং BufferedWriter হল Reader এবং Writer এর subclass, যা টেক্সট ডেটা পড়া এবং লেখার জন্য ব্যবহৃত হয় এবং এগুলোও বাফারিং সুবিধা প্রদান করে।

Buffered Streams এর সুবিধা

  1. Performance Improvement: প্রতি I/O অপারেশনে ডিস্ক বা নেটওয়ার্ক অ্যাক্সেস না করে ডেটা দ্রুত পড়া এবং লেখা যায়।
  2. Memory Efficiency: বাফারিংয়ের মাধ্যমে ডেটার একটি নির্দিষ্ট অংশে কাজ করা হয়, ফলে মেমোরি বেশি ব্যবহার হয় না।
  3. Reduced System Calls: ডেটা স্ট্রিমের পরিবর্তে একাধিক বাইট একসাথে পড়ে বা লেখা হয়, যা সিস্টেম কলের সংখ্যা কমায়।

Buffered Streams উদাহরণ

BufferedInputStream ব্যবহার করে ফাইল থেকে ডেটা পড়া

import java.io.*;

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

কাজ:

  • এই কোডে BufferedInputStream ব্যবহার করে input.txt ফাইল থেকে বাইট আকারে ডেটা পড়া হচ্ছে, এবং পরে সেটি ক্যারেক্টারে কনভার্ট করা হচ্ছে।

BufferedOutputStream ব্যবহার করে ফাইলে ডেটা লেখা

import java.io.*;

public class BufferedOutputStreamExample {
    public static void main(String[] args) {
        String data = "This is a sample text written using BufferedOutputStream.";
        
        try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("output.txt"))) {
            byte[] dataBytes = data.getBytes();
            bos.write(dataBytes);  // বাইট আকারে ডেটা ফাইলে লেখা
            System.out.println("Data written to the file using BufferedOutputStream.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

কাজ:

  • এই কোডে BufferedOutputStream ব্যবহার করে একটি ফাইলে টেক্সট ডেটা লেখা হচ্ছে।
  • ডেটা প্রথমে বাইট আকারে রূপান্তরিত হয়ে ফাইলে লেখা হয়।

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

Buffered Streams শুধু বাইনারি ডেটা নয়, টেক্সট ডেটা পড়া এবং লেখার ক্ষেত্রেও কার্যকরী। এখানে BufferedReader এবং BufferedWriter ব্যবহার করা হয়।

BufferedReader উদাহরণ:
import java.io.*;

public class BufferedReaderExample {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) {
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);  // প্রতিটি লাইন পড়ে প্রিন্ট করা
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

কাজ:

  • BufferedReader ব্যবহার করে input.txt ফাইল থেকে লাইন আকারে ডেটা পড়া হচ্ছে।
BufferedWriter উদাহরণ:
import java.io.*;

public class BufferedWriterExample {
    public static void main(String[] args) {
        String text = "This is a line of text written using BufferedWriter.";
        
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"))) {
            bw.write(text);  // টেক্সট ডেটা ফাইলে লেখা
            System.out.println("Text written to the file using BufferedWriter.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

কাজ:

  • BufferedWriter ব্যবহার করে একটি ফাইলে টেক্সট ডেটা লেখা হচ্ছে।

Buffered Streams এর জন্য Java Tuples এর ব্যবহার

Java Tuples ব্যবহার করে ফাইলের ডেটা এবং আকার একত্রে সংরক্ষণ করা যায়, যা পড়া বা লেখার প্রক্রিয়া আরও পরিষ্কার ও কার্যকর করতে সাহায্য করে। উদাহরণস্বরূপ, আমরা একটি Tuple ব্যবহার করে ফাইলের নাম এবং আকার সংরক্ষণ করতে পারি।

কোড উদাহরণ: Tuple ব্যবহার করে Buffered Streams থেকে ডেটা এবং আকার সংগ্রহ করা

import java.io.*;
import org.apache.commons.lang3.tuple.Pair;

public class TupleBufferedStreamExample {
    public static void main(String[] args) {
        Pair<String, Long> fileInfo = readFileAndGetInfo("input.txt");
        System.out.println("File Name: " + fileInfo.getLeft());
        System.out.println("File Size: " + fileInfo.getRight() + " bytes");
    }

    public static Pair<String, Long> readFileAndGetInfo(String filePath) {
        StringBuilder content = new StringBuilder();
        long size = 0;

        try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath))) {
            int byteData;
            while ((byteData = bis.read()) != -1) {
                content.append((char) byteData);
                size++;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Return file name and size as a Tuple
        return Pair.of(filePath, size);
    }
}

আউটপুট:

File Name: input.txt
File Size: 1024 bytes

Buffered Streams এর সুবিধা

  1. Performance Improvement: একাধিক ছোট I/O অপারেশনকে একটি বড় একক অপারেশনে রূপান্তরিত করে।
  2. Reduced Disk Access: ডেটা পড়া বা লেখার সময় কম সিস্টেম কল হয়।
  3. Efficient Data Handling: ফাইল বা নেটওয়ার্ক থেকে ডেটা দ্রুত এবং কার্যকরভাবে পড়া বা লেখা যায়।

Buffered Streams এর সীমাবদ্ধতা

  1. Memory Usage: বড় বাফারের জন্য বেশি মেমোরি ব্যবহৃত হতে পারে।
  2. Complexity: বাফারিংয়ের জন্য অতিরিক্ত কোড প্রয়োজন, তবে সাধারণ I/O অপারেশনগুলোর জন্য এটি প্রয়োজনীয়।

Buffered Streams Java-তে ডেটা পড়া এবং লেখা কার্যক্রম দ্রুততর এবং কার্যকর করতে ব্যবহৃত হয়। এটি বাইনারি ডেটা এবং টেক্সট ডেটা উভয়ের জন্যই কার্যকর। Java Tuples ব্যবহার করে ফাইলের নাম, আকার এবং অন্যান্য বৈশিষ্ট্য সংরক্ষণ করা যায়, যা কোডকে আরও পরিষ্কার এবং উপযোগী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...