Java NIO (New Input/Output), যা Java SE 1.4 তে প্রবর্তিত হয়, I/O অপারেশনগুলিকে আরও কার্যকরী এবং দ্রুততর করার জন্য বিভিন্ন নতুন কৌশল এবং ফিচার সরবরাহ করেছে। এর মধ্যে Character Sets, Encoding, এবং Decoding অত্যন্ত গুরুত্বপূর্ণ অংশ। যখন আপনি Java NIO এর মাধ্যমে ডেটা পাঠান বা গ্রহণ করেন, তখন Character Set এবং Encoding/Decoding এর ব্যবহার নিশ্চিত করে যে, আপনার টেক্সট ডেটা সঠিকভাবে পড়া এবং লেখা হচ্ছে।
Java NIO তে Character Encoding এবং Decoding এর জন্য Charset
, CharsetEncoder
, এবং CharsetDecoder
ক্লাসগুলি ব্যবহৃত হয়।
Java NIO তে Charset
ক্লাস বিভিন্ন ধরনের character set পরিচালনা করার জন্য ব্যবহৃত হয়, যেমন UTF-8, UTF-16, ASCII, ইত্যাদি। Charset
ক্লাসের সাহায্যে আপনি কোনো টেক্সট ফাইলকে নির্দিষ্ট encoding ফরম্যাটে লিখতে পারেন।
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;
public class EncodingExample {
public static void main(String[] args) {
String text = "Hello, Java NIO!";
// UTF-8 encoding
byte[] encodedText = text.getBytes(StandardCharsets.UTF_8);
System.out.println("Encoded text in UTF-8: " + new String(encodedText, StandardCharsets.UTF_8));
// Save encoded text to a file
Path path = Paths.get("encodedText.txt");
try {
Files.write(path, encodedText);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে StandardCharsets.UTF_8
ব্যবহার করে UTF-8 encoding এ টেক্সটটি bytes এ রূপান্তরিত করা হয়েছে এবং একটি ফাইলে লিখা হয়েছে।
Decoding হল সেই প্রক্রিয়া যেখানে encoding করা bytes কে আবার characters এ রূপান্তরিত করা হয়। Java তে CharsetDecoder
ক্লাস ব্যবহার করে আপনি বাইনারি ডেটা পুনরায় অক্ষরে রূপান্তর করতে পারেন।
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.io.IOException;
import java.nio.ByteBuffer;
public class DecodingExample {
public static void main(String[] args) {
Path path = Paths.get("encodedText.txt");
try {
// Read the encoded text from file
byte[] encodedText = Files.readAllBytes(path);
// Decode the bytes to string using UTF-8 charset
String decodedText = new String(encodedText, StandardCharsets.UTF_8);
System.out.println("Decoded text: " + decodedText);
} catch (IOException e) {
e.printStackTrace();
}
}
}
এখানে, encodedText.txt ফাইল থেকে বাইনারি ডেটা রিড করা হচ্ছে এবং UTF-8 এনকোডিং ব্যবহার করে তা ডিকোড করা হচ্ছে, যা আবার মূল টেক্সট রূপে ফিরে আসে।
Java NIO তে CharsetEncoder
এবং CharsetDecoder
ব্যবহার করে আপনি আরও বেশি কাস্টমাইজড এনকোডিং এবং ডিকোডিং অপারেশন করতে পারেন। উদাহরণস্বরূপ, আপনি UTF-8 এনকোডিং এবং ISO-8859-1 ডিকোডিং ব্যবহার করতে পারেন।
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.io.UnsupportedEncodingException;
public class EncoderDecoderExample {
public static void main(String[] args) {
String text = "Java NIO Encoding and Decoding Example";
// CharsetEncoder - Encoding the text
CharsetEncoder encoder = StandardCharsets.UTF_8.newEncoder();
ByteBuffer byteBuffer = encoder.encode(CharBuffer.wrap(text));
System.out.println("Encoded Bytes: " + byteBuffer.toString());
// CharsetDecoder - Decoding the bytes back to text
CharsetDecoder decoder = StandardCharsets.UTF_8.newDecoder();
try {
CharBuffer charBuffer = decoder.decode(byteBuffer);
System.out.println("Decoded Text: " + charBuffer.toString());
} catch (CharacterCodingException e) {
e.printStackTrace();
}
}
}
এখানে CharsetEncoder এবং CharsetDecoder ব্যবহার করে আমরা টেক্সট এনকোড এবং ডিকোড করছি। ByteBuffer
এবং CharBuffer
ক্লাসগুলির মাধ্যমে এনকোডিং এবং ডিকোডিং প্রক্রিয়া করা হয়েছে।
Java NIO তে Character Sets, Encoding, এবং Decoding হল অত্যন্ত গুরুত্বপূর্ণ ফিচার যা টেক্সট ডেটা প্রক্রিয়াকরণে সহায়ক। Charset ক্লাস এবং CharsetEncoder / CharsetDecoder ক্লাসগুলি ব্যবহার করে আপনি বিভিন্ন character encoding ফরম্যাটে ডেটা রূপান্তর করতে পারেন। এটি আন্তর্জাতিককরণ (internationalization) এবং স্থানীয়করণ (localization) প্রক্রিয়া সহজ করে তোলে, এবং বিভিন্ন প্ল্যাটফর্মের মধ্যে টেক্সট ডেটা সঠিকভাবে বিনিময় করতে সহায়ক।
Java NIO (New Input/Output) একটি শক্তিশালী API যা I/O অপারেশনগুলো দ্রুত এবং কার্যকরভাবে সম্পাদন করতে সহায়ক। Java NIO তে Charset, CharsetDecoder, এবং CharsetEncoder এর মাধ্যমে অক্ষর কোডিং এবং ডিকোডিং প্রক্রিয়া সহজ এবং দ্রুত করা যায়। এই কনসেপ্টগুলোর সাহায্যে আপনি বিভিন্ন ধরনের অক্ষর সেট (character sets) এবং ডেটা এনকোড/ডিকোড করতে পারবেন, যা বিশেষ করে বিভিন্ন ভাষা এবং সিস্টেমের মধ্যে ডেটা ট্রান্সফার করার সময় প্রয়োজনীয়।
এখানে, আমরা Charset, CharsetDecoder, এবং CharsetEncoder এর ধারণা এবং ব্যবহার নিয়ে আলোচনা করবো।
Charset হলো একটি অক্ষর সেট বা কোডিং স্কিমা, যা নির্দিষ্ট অক্ষরকে বাইনারি ডেটাতে রূপান্তর করতে ব্যবহৃত হয়। Java NIO তে Charset
ক্লাস, সিস্টেমের অক্ষর সেটের সাথে কাজ করতে ব্যবহার করা হয়, যেমন UTF-8, UTF-16, ISO-8859-1 ইত্যাদি।
Java NIO তে Charset ক্লাস দিয়ে একটি অক্ষর সেটকে চিহ্নিত করা এবং সেটের মাধ্যমে অক্ষরের এনকোড এবং ডিকোডিং করা সম্ভব হয়।
import java.nio.charset.Charset;
public class CharsetExample {
public static void main(String[] args) {
// Getting the default charset
Charset defaultCharset = Charset.defaultCharset();
System.out.println("Default Charset: " + defaultCharset);
// Getting a specific charset (UTF-8 in this case)
Charset utf8Charset = Charset.forName("UTF-8");
System.out.println("UTF-8 Charset: " + utf8Charset);
}
}
এখানে, Charset.defaultCharset()
ব্যবহার করে ডিফল্ট চ্যারসেট পাওয়া যাচ্ছে, এবং Charset.forName("UTF-8")
ব্যবহার করে UTF-8 চ্যারসেট পাওয়া যাচ্ছে। Charset
ক্লাস বিভিন্ন ধরনের কোডিং স্কিমা এবং অক্ষর সেটের জন্য সমর্থন প্রদান করে।
CharsetDecoder হল একটি ক্লাস যা বাইনারি ডেটাকে অক্ষর বা স্ট্রিং এ রূপান্তর করার জন্য ব্যবহৃত হয়। এটি এনকোড করা বাইনারি ডেটা থেকে অক্ষর ডিকোড করে। সাধারণত, একটি নির্দিষ্ট Charset ব্যবহার করে CharsetDecoder কাজ করে, যেমন UTF-8 বা UTF-16।
CharsetDecoder
ক্লাসের decode()
মেথড ব্যবহার করে বাইনারি ডেটা থেকে চরিত্র ডিকোড করা হয়।
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.io.UnsupportedEncodingException;
public class CharsetDecoderExample {
public static void main(String[] args) throws UnsupportedEncodingException {
// Get the UTF-8 charset and create a decoder
Charset charset = Charset.forName("UTF-8");
CharsetDecoder decoder = charset.newDecoder();
// Example byte data (UTF-8 encoded "Hello")
byte[] byteData = new byte[] { 72, 101, 108, 108, 111 };
ByteBuffer byteBuffer = ByteBuffer.wrap(byteData);
// Decode the byte buffer into characters
CharBuffer charBuffer = decoder.decode(byteBuffer);
// Print the decoded characters
System.out.println("Decoded string: " + charBuffer.toString());
}
}
এখানে, Charset.forName("UTF-8")
ব্যবহার করে UTF-8 Charset নেওয়া হয়েছে এবং CharsetDecoder
এর মাধ্যমে বাইনারি ডেটা ডিকোড করা হয়েছে। byte[] byteData
একটি বাইনারি ডেটা যা UTF-8 এনকোডেড "Hello" শব্দটি ধারণ করে, এবং decoder.decode(byteBuffer)
এর মাধ্যমে সেটি স্ট্রিংয়ে রূপান্তরিত হয়।
CharsetEncoder হল একটি ক্লাস যা অক্ষর বা স্ট্রিংকে বাইনারি ডেটাতে রূপান্তর করে। এটি অক্ষর থেকে বাইনারি ডেটা এনকোড করতে ব্যবহৃত হয়। CharsetEncoder
সাধারণত একটি নির্দিষ্ট Charset ব্যবহার করে এবং এনকোড করা ডেটাকে ByteBuffer তে লেখে।
CharsetEncoder
ক্লাসের encode()
মেথড ব্যবহার করে অক্ষর থেকে বাইনারি ডেটা তৈরি করা হয়।
import java.nio.charset.Charset;
import java.nio.charset.CharsetEncoder;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
public class CharsetEncoderExample {
public static void main(String[] args) {
// Get the UTF-8 charset and create an encoder
Charset charset = Charset.forName("UTF-8");
CharsetEncoder encoder = charset.newEncoder();
// Example string to encode
String input = "Hello, Java NIO!";
CharBuffer charBuffer = CharBuffer.wrap(input);
// Encode the characters into a byte buffer
ByteBuffer byteBuffer = encoder.encode(charBuffer);
// Print the encoded byte data
System.out.print("Encoded byte data: ");
while (byteBuffer.hasRemaining()) {
System.out.print(byteBuffer.get() + " ");
}
}
}
এখানে, Charset.forName("UTF-8")
ব্যবহার করে UTF-8 Charset নেওয়া হয়েছে এবং CharsetEncoder
এর মাধ্যমে একটি স্ট্রিং এনকোড করা হয়েছে। charBuffer
এর মাধ্যমে স্ট্রিংটি চিহ্নিত করা হয়েছে এবং encoder.encode(charBuffer)
এর মাধ্যমে সেটি বাইনারি ডেটাতে রূপান্তরিত হয়েছে।
Java NIO তে Charset ক্লাস ব্যবহারের মাধ্যমে আপনি বিভিন্ন ধরনের অক্ষর সেটের সঙ্গে কাজ করতে পারেন, যেমন UTF-8, UTF-16, ISO-8859-1, এবং আরও অনেক।
CharsetDecoder এবং CharsetEncoder ক্লাস ব্যবহারের মাধ্যমে আপনি সহজে এবং দ্রুত বাইনারি ডেটা থেকে স্ট্রিং তৈরি এবং স্ট্রিং থেকে বাইনারি ডেটা এনকোড করতে পারেন, যা বিভিন্ন প্ল্যাটফর্ম এবং অ্যাপ্লিকেশনের মধ্যে ডেটা ট্রান্সফারের জন্য অত্যন্ত কার্যকর।
এটি বিশেষভাবে ফাইল এবং নেটওয়ার্ক I/O অপারেশনগুলোর ক্ষেত্রে উপকারী, যেখানে ডেটা বিভিন্ন কোডিং স্কিমা তে পাঠানো এবং গ্রহণ করা হয়।
Java NIO তে Charset, CharsetDecoder, এবং CharsetEncoder এর মাধ্যমে ডেটা এনকোড এবং ডিকোডিং অনেক সহজ এবং দ্রুত করা যায়। Charset
বিভিন্ন অক্ষর সেটের সাথে কাজ করতে সাহায্য করে, এবং CharsetDecoder
ও CharsetEncoder
ব্যবহার করে আপনি বাইনারি ডেটা এবং স্ট্রিংয়ের মধ্যে রূপান্তর করতে পারেন। Java NIO তে এই ক্ষমতাগুলো কার্যকরভাবে ব্যবহার করার মাধ্যমে আপনি দ্রুত এবং দক্ষ I/O অপারেশন পরিচালনা করতে পারবেন।
Java NIO (New I/O) প্যাকেজটি ফাইল এবং স্ট্রিমে ডেটা পরিচালনা করার সময় বিভিন্ন Character Encoding সমর্থন করে। Character Encoding হল একটি সিস্টেম যা এক্সটেনসিভ ক্যারেক্টার সেটকে বাইনারি ডেটাতে রূপান্তর করে, যাতে সিস্টেমগুলোতে টেক্সট ডেটা ঠিকভাবে সংরক্ষিত এবং প্রক্রিয়াকৃত হতে পারে। Java NIO তে Charset এবং CharsetEncoder/CharsetDecoder ক্লাসের মাধ্যমে বিভিন্ন ধরনের character encoding যেমন UTF-8, ISO-8859-1, UTF-16 ইত্যাদি ব্যবহার করা হয়।
Java তে Character Encoding এর মধ্যে UTF-8 এবং ISO-8859-1 সবচেয়ে বেশি ব্যবহৃত এবং সমর্থিত। এগুলোর মধ্যে পার্থক্য এবং ব্যবহার সম্পর্কিত বিশদ আলোচনা করা হবে নিচে।
Java NIO তে Charset ক্লাসের মাধ্যমে আপনি বিভিন্ন ধরনের Character Encoding সমর্থন করতে পারেন, এবং এটিকে CharsetDecoder এবং CharsetEncoder এর মাধ্যমে encode এবং decode করা যেতে পারে।
Java NIO এর Charset ক্লাস বিভিন্ন ধরনের character encoding এবং decoding করার জন্য ব্যবহৃত হয়। এটি UTF-8, ISO-8859-1, UTF-16 সহ বিভিন্ন character set সমর্থন করে।
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
Charset utf8Charset = StandardCharsets.UTF_8;
Charset isoCharset = StandardCharsets.ISO_8859_1;
এখানে, StandardCharsets
ক্লাসটি কিছু সাধারণ Charset (যেমন UTF-8, ISO-8859-1, UTF-16) সরবরাহ করে।
UTF-8 হল একটি অত্যন্ত জনপ্রিয় character encoding যা সব ধরনের ভাষার ক্যারেক্টার সমর্থন করে এবং এটি ভেরিয়েবল লেন্থে (1-4 বাইট) character encode করে। এটি ASCII এর সুপারসেট, তাই ASCII ক্যারেক্টারগুলি 1 বাইটে এবং অন্যান্য Unicode ক্যারেক্টারগুলি 2 থেকে 4 বাইটে এনকোড করা হয়।
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.ByteBuffer;
public class UTF8Example {
public static void main(String[] args) {
String text = "Hello, Java NIO!";
// UTF-8 Encoding
ByteBuffer buffer = StandardCharsets.UTF_8.encode(text);
System.out.println("Encoded text in UTF-8: " + buffer.toString());
// UTF-8 Decoding
String decodedText = StandardCharsets.UTF_8.decode(buffer).toString();
System.out.println("Decoded text: " + decodedText);
}
}
এখানে, প্রথমে UTF-8 এনকোডিংয়ের মাধ্যমে String
কে ByteBuffer তে রূপান্তরিত করা হচ্ছে এবং পরে সেটি ডিকোড করা হচ্ছে।
ISO-8859-1 বা Latin-1 একটি 1 বাইট encoding যা পশ্চিম ইউরোপীয় ভাষাগুলির জন্য উপযুক্ত। এটি মূলত ASCII এর একটি সাবসেট যেখানে অতিরিক্ত কিছু অক্ষর যেমন €, ñ, é ইত্যাদি অন্তর্ভুক্ত রয়েছে।
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.ByteBuffer;
public class ISO88591Example {
public static void main(String[] args) {
String text = "Olá, Mundo!";
// ISO-8859-1 Encoding
ByteBuffer buffer = StandardCharsets.ISO_8859_1.encode(text);
System.out.println("Encoded text in ISO-8859-1: " + buffer.toString());
// ISO-8859-1 Decoding
String decodedText = StandardCharsets.ISO_8859_1.decode(buffer).toString();
System.out.println("Decoded text: " + decodedText);
}
}
এখানে, Olá, Mundo!
টেক্সটটি ISO-8859-1 এনকোডিংয়ের মাধ্যমে ByteBuffer তে রূপান্তরিত করা হচ্ছে এবং পরে সেটি ডিকোড করা হচ্ছে।
UTF-16 হল Unicode এনকোডিং যা দুই বাইট বা চার বাইটে চরিত্র এনকোড করে। এটি Unicode চরিত্র সেটের জন্য একটি সাধারণ এবং ব্যাপকভাবে ব্যবহৃত এনকোডিং পদ্ধতি। UTF-16 ব্যবহার করা হয় অনেক আধুনিক অ্যাপ্লিকেশন যেমন Windows API, Java, এবং JavaScript এর মধ্যে।
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.ByteBuffer;
public class UTF16Example {
public static void main(String[] args) {
String text = "こんにちは, Java NIO!";
// UTF-16 Encoding
ByteBuffer buffer = StandardCharsets.UTF_16.encode(text);
System.out.println("Encoded text in UTF-16: " + buffer.toString());
// UTF-16 Decoding
String decodedText = StandardCharsets.UTF_16.decode(buffer).toString();
System.out.println("Decoded text: " + decodedText);
}
}
এখানে, こんにちは, Java NIO!
টেক্সটটি UTF-16 এনকোডিংয়ের মাধ্যমে ByteBuffer তে রূপান্তরিত করা হচ্ছে এবং পরে সেটি ডিকোড করা হচ্ছে।
CharsetDecoder এবং CharsetEncoder ক্লাসগুলো এনকোডিং এবং ডিকোডিংয়ের কাজ সহজতর করে। CharsetDecoder একটি byte array কে character sequence (String) এ রূপান্তর করে এবং CharsetEncoder character sequence কে byte array তে রূপান্তর করে।
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.CharsetEncoder;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.io.UnsupportedEncodingException;
public class CharsetEncoderDecoderExample {
public static void main(String[] args) throws UnsupportedEncodingException {
String text = "Java NIO Encoding Example";
// CharsetEncoder
Charset charset = Charset.forName("UTF-8");
CharsetEncoder encoder = charset.newEncoder();
ByteBuffer byteBuffer = encoder.encode(CharBuffer.wrap(text));
System.out.println("Encoded ByteBuffer: " + byteBuffer.toString());
// CharsetDecoder
CharsetDecoder decoder = charset.newDecoder();
CharBuffer charBuffer = decoder.decode(byteBuffer);
System.out.println("Decoded text: " + charBuffer.toString());
}
}
এখানে, CharsetEncoder
এবং CharsetDecoder
ব্যবহার করে UTF-8 এনকোডিং এবং ডিকোডিংয়ের মাধ্যমে টেক্সট প্রক্রিয়া করা হচ্ছে।
Java NIO তে Character Encoding সমর্থন করা হয় Charset, CharsetEncoder, এবং CharsetDecoder ক্লাসের মাধ্যমে। এতে আপনি বিভিন্ন জনপ্রিয় এনকোডিং পদ্ধতি যেমন UTF-8, ISO-8859-1, এবং UTF-16 ব্যবহার করতে পারেন। প্রতিটি এনকোডিংয়ের জন্য নির্দিষ্ট সুবিধা রয়েছে, যেমন UTF-8 ইউনিকোড চরিত্র সমর্থন করে এবং বিভিন্ন ভাষার জন্য আদর্শ, ISO-8859-1 প্রধানত পশ্চিম ইউরোপীয় ভাষাগুলির জন্য ব্যবহৃত হয়, এবং UTF-16 বড় আকারের Unicode সিস্টেমের জন্য আদর্শ। Java NIO আপনাকে এই সমস্ত এনকোডিং সহজে এবং কার্যকরীভাবে পরিচালনা করার সুযোগ দেয়।
Java NIO (New Input/Output) একটি শক্তিশালী API যা দ্রুত এবং কার্যকরী I/O অপারেশন প্রদান করে। যখন ডেটা পাঠানো এবং গ্রহণ করা হয়, তখন ByteBuffer এবং CharBuffer ব্যবহার করে আপনি ডেটার Encoding এবং Decoding প্রক্রিয়া সহজভাবে পরিচালনা করতে পারেন। ByteBuffer এবং CharBuffer Java NIO তে ডেটা স্টোর করার জন্য প্রধান দুটি বাফার টাইপ যা বাইনারি এবং টেক্সট ডেটা ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
এখানে আমরা আলোচনা করব কীভাবে ByteBuffer এবং CharBuffer ব্যবহার করে Encoding এবং Decoding করা যায়।
ByteBuffer
একটি NIO বাফার যা বাইনারি ডেটা স্টোর করে। এটি মূলত বাইনারি ডেটা যেমন ছবি, অডিও ফাইল, বা নেটওয়ার্কের মাধ্যমে পাঠানো ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। ByteBuffer টেক্সট ডেটাকে বাইনারি ফরম্যাটে রূপান্তর করতে (encoding) এবং বাইনারি ডেটাকে টেক্সট ফরম্যাটে রূপান্তর করতে (decoding) ব্যবহৃত হয়।
CharBuffer
একটি NIO বাফার যা ইউনিকোড ক্যারেক্টার (text) স্টোর করে। এটি টেক্সট ডেটা পড়তে এবং লিখতে ব্যবহৃত হয়। CharBuffer
ব্যবহার করে আপনি টেক্সট ডেটাকে বাইনারি ডেটায় রূপান্তর (encoding) এবং বাইনারি ডেটাকে টেক্সট ডেটায় রূপান্তর (decoding) করতে পারেন।
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 হল একটি প্রক্রিয়া যেখানে বাইনারি ডেটাকে টেক্সট ডেটায় রূপান্তর করা হয়। এটি সাধারণত 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
তে ডেটা ডিকোড করা হচ্ছে।
Java NIO তে ByteBuffer এবং CharBuffer এর মধ্যে ডেটা রূপান্তরের জন্য Charset ব্যবহার করা হয়। Charset
ক্লাস টেক্সট এনকোডিং এবং ডিকোডিং এর জন্য একটি স্ট্যান্ডার্ড সেট সরবরাহ করে, যেমন UTF-8, UTF-16, এবং ISO-8859-1।
Encoding:
CharsetEncoder
ব্যবহার করে নির্দিষ্ট ক্যারেক্টার সেট (যেমন UTF-8) এর মাধ্যমে CharBuffer কে ByteBuffer তে রূপান্তরিত করা।Decoding:
CharsetDecoder
ব্যবহার করে ByteBuffer কে টেক্সট ফরম্যাটে রূপান্তর করা।Java NIO তে ByteBuffer এবং CharBuffer এর মাধ্যমে Encoding এবং Decoding খুবই কার্যকরী এবং সাধারণ প্রক্রিয়া। ByteBuffer বাইনারি ডেটা পরিচালনা করতে ব্যবহৃত হয়, আর CharBuffer টেক্সট ডেটা পরিচালনা করতে ব্যবহৃত হয়। Java NIO এর মাধ্যমে আপনি খুব সহজে টেক্সট এবং বাইনারি ডেটার মধ্যে রূপান্তর করতে পারবেন। Charset, CharsetEncoder, এবং CharsetDecoder এর সাহায্যে টেক্সট ডেটা ByteBuffer তে এনকোড এবং ByteBuffer থেকে CharBuffer তে ডিকোড করা সম্ভব।
Java NIO (Non-blocking I/O) এর মধ্যে Character Set ব্যবস্থাপনা একটি গুরুত্বপূর্ণ দিক, যা বিভিন্ন ধরনের চরিত্র এনকোডিং এবং ডিকোডিংকে সহজ করে তোলে। Java NIO তে, Charset এবং CharsetEncoder/ CharsetDecoder ক্লাসগুলি ব্যবহার করে ক্যারেক্টার ডেটা প্রক্রিয়া এবং বিভিন্ন এনকোডিং ফরম্যাটে ডেটা লিখন ও পড়ার কাজ করা যায়।
Character Set ব্যবস্থাপনা ব্যবহার করে আপনি বিভিন্ন ধরনের এনকোডিং সিস্টেম যেমন UTF-8, ISO-8859-1, US-ASCII ইত্যাদির মাধ্যমে ডেটা পরিচালনা করতে পারেন।
এখানে আমরা Character Set ব্যবস্থাপনা করার জন্য Java NIO এর Charset, CharsetEncoder, এবং CharsetDecoder ক্লাসগুলি ব্যবহার করে উদাহরণ দেখব।
Character Set একটি সেট বা সংগ্রহ যা বিভিন্ন ক্যারেক্টারের এনকোডিং সংজ্ঞায়িত করে। এটি মূলত ক্যারেক্টারের সংখ্যা এবং প্রতিটি ক্যারেক্টারের জন্য একটি নির্দিষ্ট বাইনারি কোড নির্দেশ করে।
Java NIO তে Charset একটি স্ট্যান্ডার্ড এনকোডিং এবং ডিকোডিং প্রক্রিয়া প্রদান করে, যা বিভিন্ন ফরম্যাটে ক্যারেক্টার ডেটা সঞ্চালন করতে সহায়ক।
Java NIO তে Charset
ক্লাসের মাধ্যমে আপনি বিভিন্ন ধরনের এনকোডিং এবং ডিকোডিং ফরম্যাটে ডেটা পরিচালনা করতে পারেন। কিছু সাধারণ Charset হলো: UTF-8, UTF-16, ISO-8859-1, US-ASCII ইত্যাদি।
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
public class CharsetExample {
public static void main(String[] args) {
String text = "Hello, Java NIO!";
// UTF-8 Charset ব্যবহার করে String কে Byte Array তে রূপান্তর করা
byte[] encodedText = text.getBytes(StandardCharsets.UTF_8);
System.out.println("Encoded Text (UTF-8):");
for (byte b : encodedText) {
System.out.print(b + " ");
}
}
}
এখানে, StandardCharsets.UTF_8
ব্যবহার করে একটি String
কে UTF-8 এনকোডিং ফরম্যাটে byte[]
অ্যারে তে রূপান্তর করা হয়েছে।
Java NIO তে CharsetDecoder এবং CharsetEncoder ক্লাস ব্যবহার করে এনকোডিং এবং ডিকোডিং অপারেশন আরও কাস্টমাইজডভাবে পরিচালনা করা যায়।
Charset
থেকে একটি ByteBuffer
তৈরি করে, যা একটি ক্যারেক্টার স্ট্রিংকে বাইনারি ডেটা হিসেবে এনকোড করে।ByteBuffer
থেকে একটি স্ট্রিং তৈরি করে, যা বাইনারি ডেটাকে ক্যারেক্টার ডেটা হিসেবে ডিকোড করে।import java.nio.*;
import java.nio.charset.*;
public class CharsetEncoderDecoderExample {
public static void main(String[] args) {
String text = "Java NIO Charset Example";
// CharsetEncoder ব্যবহার করে String এনকোডিং
Charset charset = Charset.forName("UTF-8");
CharsetEncoder encoder = charset.newEncoder();
try {
ByteBuffer byteBuffer = encoder.encode(CharBuffer.wrap(text));
System.out.println("Encoded ByteBuffer:");
while (byteBuffer.hasRemaining()) {
System.out.print(byteBuffer.get() + " ");
}
// CharsetDecoder ব্যবহার করে ByteBuffer ডিকোডিং
CharsetDecoder decoder = charset.newDecoder();
CharBuffer decodedBuffer = decoder.decode(byteBuffer);
System.out.println("\nDecoded String:");
System.out.println(decodedBuffer.toString());
} catch (CharacterCodingException e) {
e.printStackTrace();
}
}
}
এখানে, CharsetEncoder ব্যবহার করে String
কে বাইনারি ফরম্যাটে এনকোড করা হয়েছে এবং পরে CharsetDecoder ব্যবহার করে সেটি আবার মূল স্ট্রিংয়ে রূপান্তরিত করা হয়েছে।
Java NIO তে UTF-16 এনকোডিং এবং ডিকোডিং এর মাধ্যমে ক্যারেক্টার ডেটা প্রক্রিয়া করা যেতে পারে।
import java.nio.*;
import java.nio.charset.*;
public class UTF16EncodingExample {
public static void main(String[] args) {
String text = "Hello, UTF-16 Encoding!";
// UTF-16 Charset ব্যবহার করে String কে ByteBuffer তে এনকোড করা
Charset charset = Charset.forName("UTF-16");
CharsetEncoder encoder = charset.newEncoder();
try {
ByteBuffer byteBuffer = encoder.encode(CharBuffer.wrap(text));
System.out.println("UTF-16 Encoded ByteBuffer:");
while (byteBuffer.hasRemaining()) {
System.out.print(byteBuffer.get() + " ");
}
// UTF-16 Decoder ব্যবহার করে ByteBuffer ডিকোডিং
CharsetDecoder decoder = charset.newDecoder();
CharBuffer decodedBuffer = decoder.decode(byteBuffer);
System.out.println("\nDecoded String (UTF-16):");
System.out.println(decodedBuffer.toString());
} catch (CharacterCodingException e) {
e.printStackTrace();
}
}
}
এখানে, UTF-16 এনকোডিং ব্যবহার করে একটি String
কে ByteBuffer
তে এনকোড করা হয়েছে এবং পরে সেটি আবার ডিকোড করা হয়েছে।
Java NIO এর Charset, CharsetEncoder, এবং CharsetDecoder ক্লাসগুলি ক্যারেক্টার এনকোডিং এবং ডিকোডিং ব্যবস্থাপনা করার জন্য অত্যন্ত গুরুত্বপূর্ণ। আপনি সহজেই বিভিন্ন ধরনের চরিত্র এনকোডিং ফরম্যাট যেমন UTF-8, UTF-16, ISO-8859-1, ইত্যাদির সাথে কাজ করতে পারেন। এনকোডিং এবং ডিকোডিং অপারেশনগুলো Java NIO এর মাধ্যমে খুবই কার্যকর এবং দ্রুত হয়, যা বিভিন্ন আন্তর্জাতিক ভাষা এবং প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণ ডেটা পরিচালনায় সাহায্য করে।
Read more