Java NIO (New Input/Output) একটি শক্তিশালী API যা দ্রুত এবং কার্যকরী I/O অপারেশন প্রদান করে। যখন ডেটা পাঠানো এবং গ্রহণ করা হয়, তখন ByteBuffer এবং CharBuffer ব্যবহার করে আপনি ডেটার Encoding এবং Decoding প্রক্রিয়া সহজভাবে পরিচালনা করতে পারেন। ByteBuffer এবং CharBuffer Java NIO তে ডেটা স্টোর করার জন্য প্রধান দুটি বাফার টাইপ যা বাইনারি এবং টেক্সট ডেটা ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
এখানে আমরা আলোচনা করব কীভাবে ByteBuffer এবং CharBuffer ব্যবহার করে Encoding এবং Decoding করা যায়।
ByteBuffer এবং CharBuffer
১. ByteBuffer
ByteBuffer একটি NIO বাফার যা বাইনারি ডেটা স্টোর করে। এটি মূলত বাইনারি ডেটা যেমন ছবি, অডিও ফাইল, বা নেটওয়ার্কের মাধ্যমে পাঠানো ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। ByteBuffer টেক্সট ডেটাকে বাইনারি ফরম্যাটে রূপান্তর করতে (encoding) এবং বাইনারি ডেটাকে টেক্সট ফরম্যাটে রূপান্তর করতে (decoding) ব্যবহৃত হয়।
২. CharBuffer
CharBuffer একটি NIO বাফার যা ইউনিকোড ক্যারেক্টার (text) স্টোর করে। এটি টেক্সট ডেটা পড়তে এবং লিখতে ব্যবহৃত হয়। CharBuffer ব্যবহার করে আপনি টেক্সট ডেটাকে বাইনারি ডেটায় রূপান্তর (encoding) এবং বাইনারি ডেটাকে টেক্সট ডেটায় রূপান্তর (decoding) করতে পারেন।
Encoding এবং Decoding প্রক্রিয়া
১. Encoding (CharBuffer থেকে ByteBuffer তে)
Encoding হল একটি প্রক্রিয়া যেখানে টেক্সট ডেটাকে বাইনারি ফরম্যাটে রূপান্তর করা হয়। এটি সাধারণত Charset ক্লাসের মাধ্যমে করা হয়। CharBuffer ব্যবহার করে টেক্সট ডেটা ByteBuffer তে রূপান্তর করতে, আমরা একটি CharsetEncoder ব্যবহার করতে পারি।
উদাহরণ: CharBuffer থেকে ByteBuffer তে Encoding
import java.nio.*;
import java.nio.charset.*;
import java.io.*;
public class EncodingExample {
public static void main(String[] args) throws UnsupportedEncodingException {
String text = "Hello Java NIO!";
// CharBuffer to store character data
CharBuffer charBuffer = CharBuffer.wrap(text);
// Create a CharsetEncoder for UTF-8 encoding
CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder();
// Create a ByteBuffer to store the encoded data
ByteBuffer byteBuffer = encoder.encode(charBuffer);
System.out.println("Encoded ByteBuffer: " + byteBuffer.toString());
}
}
এখানে, CharsetEncoder ব্যবহার করে CharBuffer থেকে ByteBuffer তে টেক্সট ডেটা এনকোড করা হচ্ছে।
২. Decoding (ByteBuffer থেকে CharBuffer তে)
Decoding হল একটি প্রক্রিয়া যেখানে বাইনারি ডেটাকে টেক্সট ডেটায় রূপান্তর করা হয়। এটি সাধারণত CharsetDecoder ক্লাসের মাধ্যমে করা হয়। ByteBuffer ব্যবহার করে বাইনারি ডেটা CharBuffer তে রূপান্তর করতে, আমরা একটি CharsetDecoder ব্যবহার করতে পারি।
উদাহরণ: ByteBuffer থেকে CharBuffer তে Decoding
import java.nio.*;
import java.nio.charset.*;
import java.io.*;
public class DecodingExample {
public static void main(String[] args) throws UnsupportedEncodingException {
String text = "Hello Java NIO!";
// CharBuffer to store character data
CharBuffer charBuffer = CharBuffer.wrap(text);
// Create a CharsetEncoder for UTF-8 encoding
CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder();
// Create a ByteBuffer to store the encoded data
ByteBuffer byteBuffer = encoder.encode(charBuffer);
// Create a CharsetDecoder for UTF-8 decoding
CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
// Decode the ByteBuffer to CharBuffer
CharBuffer decodedCharBuffer = decoder.decode(byteBuffer);
System.out.println("Decoded CharBuffer: " + decodedCharBuffer.toString());
}
}
এখানে, CharsetDecoder ব্যবহার করে ByteBuffer থেকে CharBuffer তে ডেটা ডিকোড করা হচ্ছে।
ByteBuffer এবং CharBuffer এর মধ্যে ডেটা রূপান্তর
Java NIO তে ByteBuffer এবং CharBuffer এর মধ্যে ডেটা রূপান্তরের জন্য Charset ব্যবহার করা হয়। Charset ক্লাস টেক্সট এনকোডিং এবং ডিকোডিং এর জন্য একটি স্ট্যান্ডার্ড সেট সরবরাহ করে, যেমন UTF-8, UTF-16, এবং ISO-8859-1।
১. Charset ব্যবহার করে Encoding এবং Decoding
Encoding:
- CharBuffer থেকে ByteBuffer তে টেক্সট এনকোড করা।
CharsetEncoderব্যবহার করে নির্দিষ্ট ক্যারেক্টার সেট (যেমন UTF-8) এর মাধ্যমে CharBuffer কে ByteBuffer তে রূপান্তরিত করা।
Decoding:
- ByteBuffer থেকে CharBuffer তে বাইনারি ডেটা ডিকোড করা।
CharsetDecoderব্যবহার করে ByteBuffer কে টেক্সট ফরম্যাটে রূপান্তর করা।
Java NIO তে ByteBuffer এবং CharBuffer এর মাধ্যমে Encoding এবং Decoding খুবই কার্যকরী এবং সাধারণ প্রক্রিয়া। ByteBuffer বাইনারি ডেটা পরিচালনা করতে ব্যবহৃত হয়, আর CharBuffer টেক্সট ডেটা পরিচালনা করতে ব্যবহৃত হয়। Java NIO এর মাধ্যমে আপনি খুব সহজে টেক্সট এবং বাইনারি ডেটার মধ্যে রূপান্তর করতে পারবেন। Charset, CharsetEncoder, এবং CharsetDecoder এর সাহায্যে টেক্সট ডেটা ByteBuffer তে এনকোড এবং ByteBuffer থেকে CharBuffer তে ডিকোড করা সম্ভব।
Read more