SequenceInputStream হল Java I/O ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি সিকোয়েন্স আকারে ডেটা পড়তে ব্যবহৃত হয়। এটি বিভিন্ন ইনপুট স্ট্রিমকে একটি একক স্ট্রিমের মতো পরিচালনা করে এবং প্রথম স্ট্রিম থেকে শেষ হওয়া ডেটা পরবর্তী স্ট্রিমে পাঠাতে থাকে। এটি বিশেষভাবে উপকারী যখন আপনাকে একাধিক ফাইল বা ডেটা স্ট্রিম থেকে ডেটা একসাথে পড়তে হয়।
SequenceInputStream এর ধারণা
SequenceInputStream একাধিক ইনপুট স্ট্রিমকে একটি স্ট্রিমে একত্রিত করে, যা একে একে স্ট্রিমগুলির ডেটা পড়তে সক্ষম। এটি InputStream এর একটি সাবক্লাস এবং সাধারণত FileInputStream, ByteArrayInputStream ইত্যাদি স্ট্রিমের সাথে ব্যবহৃত হয়।
SequenceInputStream এর মৌলিক ব্যবহার
SequenceInputStream দুটি বা তার অধিক InputStream যুক্ত করতে সক্ষম।
Syntax:
SequenceInputStream(InputStream s1, InputStream s2);
এখানে s1 এবং s2 দুটি ইনপুট স্ট্রিম, যা একে অপরের পর পর পড়া হবে।
SequenceInputStream ব্যবহার করার উদাহরণ
একাধিক ফাইল থেকে ডেটা পড়া
ধরা যাক আমাদের দুটি টেক্সট ফাইল রয়েছে (file1.txt এবং file2.txt) এবং আমরা তাদের একসাথে একটি ফাইলে পড়তে চাই।
ফাইল ১ (file1.txt):
Hello, this is file 1.
ফাইল ২ (file2.txt):
And this is file 2.
SequenceInputStream উদাহরণ:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class SequenceInputStreamExample {
public static void main(String[] args) {
String file1 = "file1.txt";
String file2 = "file2.txt";
try (FileInputStream fileInputStream1 = new FileInputStream(file1);
FileInputStream fileInputStream2 = new FileInputStream(file2);
SequenceInputStream sequenceInputStream = new SequenceInputStream(fileInputStream1, fileInputStream2)) {
int data;
while ((data = sequenceInputStream.read()) != -1) {
System.out.print((char) data); // Print data character by character
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- এখানে দুটি FileInputStream (
fileInputStream1এবংfileInputStream2) তৈরি করা হয়েছে, যা দুটি ফাইল থেকে ডেটা পড়তে ব্যবহৃত হবে। - তারপর SequenceInputStream ব্যবহার করা হয়েছে, যা এই দুটি স্ট্রিমকে একত্রিত করবে এবং সেগুলির ডেটা ধারাবাহিকভাবে পড়বে।
আউটপুট:
Hello, this is file 1.And this is file 2.
SequenceInputStream ব্যবহার করে Multiple Streams একত্রিত করা
SequenceInputStream এর মাধ্যমে একাধিক স্ট্রিম একত্রিত করা যায়। নিম্নলিখিত উদাহরণে, আমরা একটি ByteArrayInputStream এবং একটি FileInputStream একত্রিত করে তাদের ডেটা পড়ব।
উদাহরণ:
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class MultipleStreamsExample {
public static void main(String[] args) {
String text = "This is data from ByteArrayInputStream.";
String filePath = "file2.txt"; // Assume this file exists
try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(text.getBytes());
FileInputStream fileInputStream = new FileInputStream(filePath);
SequenceInputStream sequenceInputStream = new SequenceInputStream(byteArrayInputStream, fileInputStream)) {
int data;
while ((data = sequenceInputStream.read()) != -1) {
System.out.print((char) data); // Print data from both streams
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- এখানে ByteArrayInputStream এবং FileInputStream দুটি স্ট্রিম তৈরি করা হয়েছে।
- SequenceInputStream দুটি স্ট্রিমের ডেটাকে একত্রিত করে sequentially পড়ছে।
byteArrayInputStreamথেকে প্রথমে ডেটা পড়া হচ্ছে, তারপরfileInputStreamথেকে ডেটা পড়া হচ্ছে।
আউটপুট:
This is data from ByteArrayInputStream. (Contents of file2.txt)
Tuples এবং SequenceInputStream এর Integration
Tuples ব্যবহার করে একাধিক ভ্যালু সংরক্ষণ এবং SequenceInputStream এর মাধ্যমে ডেটা পড়া এবং প্রক্রিয়া করা সহজভাবে করা যায়। এটি কার্যকরভাবে ডেটা সংরক্ষণ এবং একাধিক স্ট্রিম একত্রিত করতে সাহায্য করতে পারে।
উদাহরণ: Tuples এবং SequenceInputStream একসাথে ব্যবহার
import org.javatuples.Pair;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
public class TupleWithSequenceInputStreamExample {
public static void main(String[] args) {
// Tuple containing file paths
Pair<String, String> files = Pair.with("file1.txt", "file2.txt");
try (FileInputStream fileInputStream1 = new FileInputStream(files.getValue0());
FileInputStream fileInputStream2 = new FileInputStream(files.getValue1());
SequenceInputStream sequenceInputStream = new SequenceInputStream(fileInputStream1, fileInputStream2)) {
int data;
while ((data = sequenceInputStream.read()) != -1) {
System.out.print((char) data); // Print data from both files
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- Pair<String, String> files Tuple ব্যবহার করে ফাইল পাথগুলো সংরক্ষণ করা হয়েছে।
SequenceInputStreamব্যবহার করে দুটি ফাইল থেকে ডেটা একত্রিতভাবে পড়া হচ্ছে।
আউটপুট:
Hello, this is file 1.And this is file 2.
SequenceInputStream এর সুবিধা
- Multiple Streams Handling:
- একাধিক ইনপুট স্ট্রিমের ডেটা একত্রিত করে পড়ার সুবিধা।
- Readable Code:
- কোড সহজ এবং কমপ্যাক্ট, যেখানে একাধিক স্ট্রিম ব্যবহার করা হচ্ছে।
- Memory Efficient:
- ডেটার প্রতিটি স্ট্রিম মেমরি ব্যবহার কম করে, যেহেতু এটি একে একে ডেটা পড়ে।
- Flexibility:
- স্ট্রিমগুলিকে ডায়নামিকভাবে যুক্ত করা যায় এবং SequenceInputStream দ্বারা প্রসেস করা যায়।
SequenceInputStream হল একটি শক্তিশালী Java ক্লাস যা একাধিক ইনপুট স্ট্রিমকে একত্রিত করে একটি সিকোয়েন্স আকারে ডেটা পড়তে সাহায্য করে। এটি ফাইল থেকে একাধিক ডেটা পড়া, স্ট্রিমের সংমিশ্রণ, এবং কার্যকর ডেটা ম্যানিপুলেশনে সহায়ক। Tuples ব্যবহার করলে ডেটার গঠন আরও সহজ এবং রিডেবল হয়, যা ডেটা প্রসেসিং আরও দক্ষ করে তোলে।