Pushback Streams Java I/O প্যাকেজের একটি বিশেষ বৈশিষ্ট্য, যা স্ট্রীমে ডেটা পড়ার সময় নির্দিষ্ট বাইট বা ক্যারেক্টার পুনরায় "pushback" (ফিরিয়ে দেওয়া) করার ক্ষমতা প্রদান করে। এটি মূলত character stream বা byte stream-এ ডেটা পুনঃপাঠ বা ফেরত দেওয়ার জন্য ব্যবহৃত হয়, যাতে পূর্ববর্তী ডেটা পুনরায় প্রসেস করা যেতে পারে।
PushbackReader এবং PushbackInputStream হল Java I/O প্যাকেজের দুটি ক্লাস, যেগুলি pushback mechanism সমর্থন করে এবং stream processing এর জন্য অত্যন্ত কার্যকরী।
PushbackReader এবং PushbackInputStream এর ধারণা:
- PushbackInputStream:
- এটি byte stream এর একটি ক্লাস এবং InputStream থেকে ইনপুট নেওয়ার জন্য ব্যবহৃত হয়। এটি এমনভাবে কাজ করে যে, আপনি একটি বাইট পড়ার পর, সেটি
unread()মেথডের মাধ্যমে পুনরায় ফেলে দিতে পারেন, অর্থাৎ pushback করতে পারেন। ফলে, এটি স্ট্রীমে ফেরত দেওয়া ডেটা পরে আবার পড়তে সক্ষম হবে।
- এটি byte stream এর একটি ক্লাস এবং InputStream থেকে ইনপুট নেওয়ার জন্য ব্যবহৃত হয়। এটি এমনভাবে কাজ করে যে, আপনি একটি বাইট পড়ার পর, সেটি
- PushbackReader:
- এটি character stream এর একটি ক্লাস যা Reader থেকে ইনপুট পড়ে এবং নির্দিষ্ট চরিত্রগুলি pushback করতে সক্ষম। এটি pushback ফিচার সাপোর্ট করে, যেখানে আপনি পড়া ডেটাকে ফেরত (push back) পাঠাতে পারেন।
PushbackInputStream ক্লাস:
PushbackInputStream ক্লাসটি InputStream এর একটি সাবক্লাস যা আপনাকে পড়া byte data পুনরায় ফিরিয়ে দেওয়ার (pushback) সুবিধা দেয়। এটি unread() মেথড দ্বারা পূর্ববর্তী byte গুলি ফেরত পাঠাতে পারে।
PushbackInputStream উদাহরণ:
import java.io.*;
public class PushbackInputStreamExample {
public static void main(String[] args) {
String data = "Hello World!";
try (PushbackInputStream pushbackInputStream = new PushbackInputStream(new ByteArrayInputStream(data.getBytes()))) {
int byteData;
// প্রথম বাইট পড়া
byteData = pushbackInputStream.read();
System.out.print((char) byteData); // Output: H
// unread() মেথড ব্যবহার করে প্রথম বাইটটি পুনরায় পাঠানো
pushbackInputStream.unread(byteData);
// ফেরত পাঠানো বাইটটি পুনরায় পড়া
byteData = pushbackInputStream.read();
System.out.print((char) byteData); // Output: H
// পরবর্তী বাইটগুলি পড়া
while ((byteData = pushbackInputStream.read()) != -1) {
System.out.print((char) byteData); // Output: ello World!
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- PushbackInputStream স্ট্রীম থেকে প্রথম বাইটটি পড়ার পর
unread(byteData)মেথড দ্বারা সেই বাইটটি ফেরত পাঠানো হয়েছে। এর পর আবার একই বাইট পড়া হয়। - এতে pushback mechanism ব্যবহার করে পড়া ডেটাকে re-read করা হয়েছে।
আউটপুট:
Hello World!
PushbackReader ক্লাস:
PushbackReader ক্লাসটি Reader এর একটি সাবক্লাস যা character stream এর মাধ্যমে ইনপুট পড়ে এবং নির্দিষ্ট চরিত্রগুলি pushback করতে সক্ষম। এটি unread() মেথড দ্বারা একটি ক্যারেক্টার বা ক্যারেক্টারের অ্যারে পুনরায় স্ট্রীমে ফিরিয়ে দিতে পারে।
PushbackReader উদাহরণ:
import java.io.*;
public class PushbackReaderExample {
public static void main(String[] args) {
String data = "Hello Java!";
try (PushbackReader pushbackReader = new PushbackReader(new StringReader(data), 10)) {
int charData;
// প্রথম ক্যারেক্টার পড়া
charData = pushbackReader.read();
System.out.print((char) charData); // Output: H
// unread() মেথড ব্যবহার করে প্রথম ক্যারেক্টারটি পুনরায় পাঠানো
pushbackReader.unread(charData);
// ফেরত পাঠানো ক্যারেক্টারটি পুনরায় পড়া
charData = pushbackReader.read();
System.out.print((char) charData); // Output: H
// পরবর্তী ক্যারেক্টারগুলি পড়া
while ((charData = pushbackReader.read()) != -1) {
System.out.print((char) charData); // Output: ello Java!
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- PushbackReader স্ট্রীম থেকে প্রথম ক্যারেক্টারটি পড়ার পর
unread()মেথড দ্বারা সেই ক্যারেক্টারটি ফেরত পাঠানো হয়েছে। - এটি pushback ফিচারের মাধ্যমে character-based ডেটা ফেরত পাঠাতে এবং পুনরায় পড়তে সক্ষম।
আউটপুট:
Hello Java!
Pushback Streams এর সুবিধা:
- Retrieving Data:
- Pushback Streams আপনাকে স্ট্রীম থেকে পড়া ডেটাকে ফেরত পাঠানোর (pushback) সুযোগ দেয়, যা অনেক সময় ডেটা প্রক্রিয়াকরণের জন্য প্রয়োজনীয় হতে পারে, যেমন ভুল ডেটা পড়ে ফেললে সেটি পুনরায় পড়া।
- Efficient Data Processing:
- Pushback Streams ব্যবহার করে আপনি দ্রুত এবং কার্যকরভাবে ডেটা প্রক্রিয়াকরণ করতে পারেন, কারণ আপনাকে ডেটার অংশগুলি পুনরায় প্রক্রিয়া করতে হতে পারে, যেমন lexer বা parser এ ব্যবহার করা হয়।
- Control over Stream:
- এটি স্ট্রীমে manual control প্রদান করে, যেমন ডেটা পুনরায় পাঠানো এবং পড়া, যা অন্যান্য সাধারণ InputStream বা Reader ক্লাসে সম্ভব নয়।
- Text-based and Binary Streams:
- PushbackReader এবং PushbackInputStream উভয়ই character streams এবং byte streams-এর জন্য কাজ করতে পারে, তাই এটি টেক্সট এবং বাইনারি উভয় ধরনের ডেটা অ্যাক্সেস এবং প্রক্রিয়া করার জন্য উপযুক্ত।
Pushback Streams এর সীমাবদ্ধতা:
- Memory Consumption:
- Pushback Streams স্ট্রীমের ডেটা কিছু সময়ের জন্য memory তে ধরে রাখে, যা বড় ডেটা ফাইল বা সিস্টেমে অতিরিক্ত মেমরি ব্যবহারের সমস্যা সৃষ্টি করতে পারে।
- Complexity:
- Pushback মেথড ব্যবহারের জন্য কিছু অতিরিক্ত জটিলতা থাকতে পারে, কারণ unread() মেথড দ্বারা আপনি শুধুমাত্র সীমিত সংখ্যক বাইট বা ক্যারেক্টার ফেরত পাঠাতে পারবেন।
- Pushback Streams হল Java I/O প্যাকেজের একটি শক্তিশালী বৈশিষ্ট্য যা ডেটা ফেরত পাঠানো (pushback) করার ক্ষমতা প্রদান করে।
- PushbackInputStream এবং PushbackReader ক্লাসগুলি আপনাকে byte এবং character streams-এ ডেটা পড়ার পরে তা পুনরায় স্ট্রীমে ফেরত পাঠানোর ক্ষমতা দেয়।
- এটি data parsing বা lexical analysis এর মতো অ্যাপ্লিকেশনগুলিতে খুবই কার্যকরী, যেখানে stream data একাধিকবার প্রসেস করা প্রয়োজন।
Pushback Streams ব্যবহার করে আপনি স্ট্রীম ডেটাকে manual control দিয়ে প্রক্রিয়া করতে পারেন, এবং এটি performance এবং data manipulation জন্য একটি মূল্যবান টুল।
Read more