Java NIO (New I/O) লাইব্রেরি, যা Java 1.4 এ অন্তর্ভুক্ত হয়েছিল, উন্নত পারফরম্যান্স এবং সুনির্দিষ্ট I/O অপারেশনগুলির জন্য ব্যবহৃত হয়। NIO সিস্টেম এ Buffer ব্যবহার করা হয়, যা ডেটা পড়া বা লেখার জন্য একটি স্টোরেজ অবস্থান হিসেবে কাজ করে। NIO-তে Buffer হল এমন একটি অবজেক্ট যা ডেটা সরাসরি মেমরিতে হ্যান্ডেল করার সুবিধা দেয়।
এখানে, ByteBuffer, CharBuffer, IntBuffer এবং অন্যান্য ধরনের Buffer এর ব্যবহারের বিস্তারিত আলোচনা করা হবে।
ByteBuffer এর ব্যবহার
ByteBuffer হল Java NIO এর সবচেয়ে জনপ্রিয় এবং সাধারণ Buffer, যা বাইট (byte) ডেটা প্রক্রিয়া করার জন্য ব্যবহৃত হয়। এটি বিশেষভাবে ফাইল I/O, সোকেট I/O এবং অন্যান্য বাইনারি ডেটা হ্যান্ডলিং এর জন্য উপযুক্ত।
ByteBuffer তৈরি করা
ByteBuffer তৈরি করার জন্য allocate() মেথড ব্যবহার করা হয়। এখানে একটি উদাহরণ দেওয়া হলো:
import java.nio.ByteBuffer;
public class ByteBufferExample {
public static void main(String[] args) {
// Allocate a ByteBuffer with capacity 10
ByteBuffer buffer = ByteBuffer.allocate(10);
// Put some bytes into the buffer
buffer.put((byte) 1);
buffer.put((byte) 2);
buffer.put((byte) 3);
// Flip the buffer for reading
buffer.flip();
// Read the data
while (buffer.hasRemaining()) {
System.out.println(buffer.get());
}
}
}
ByteBuffer এর প্রধান ফিচার
- put(): ডেটা লেখার জন্য ব্যবহৃত হয়।
- get(): ডেটা পড়ার জন্য ব্যবহৃত হয়।
- flip(): ডেটা লেখার পর সেটি পড়তে প্রস্তুত করতে ব্যবহৃত হয়।
- clear(): পূর্ববর্তী ডেটা মুছে ফেলে নতুন ডেটার জন্য প্রস্তুত করা হয়।
CharBuffer এর ব্যবহার
CharBuffer হলো একটি Buffer যা ক্যারেক্টার (character) ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি টেক্সট প্রক্রিয়াকরণের জন্য উপযুক্ত, বিশেষ করে যখন Unicode ডেটা নিয়ে কাজ করা হয়।
CharBuffer তৈরি করা
import java.nio.CharBuffer;
public class CharBufferExample {
public static void main(String[] args) {
// Allocate a CharBuffer with capacity 10
CharBuffer buffer = CharBuffer.allocate(10);
// Put some characters into the buffer
buffer.put('A');
buffer.put('B');
buffer.put('C');
// Flip the buffer for reading
buffer.flip();
// Read the data
while (buffer.hasRemaining()) {
System.out.println(buffer.get());
}
}
}
CharBuffer এর প্রধান ফিচার
- put(): ক্যারেক্টার লেখার জন্য ব্যবহৃত হয়।
- get(): ক্যারেক্টার পড়ার জন্য ব্যবহৃত হয়।
- flip(): লেখার পরে পড়তে প্রস্তুত করতে ব্যবহৃত হয়।
- clear(): বাফারের অবস্থান reset করে, নতুন ডেটা লেখার জন্য প্রস্তুত করা হয়।
IntBuffer এর ব্যবহার
IntBuffer হলো একটি Buffer যা পূর্ণসংখ্যা (integer) ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি বিশেষভাবে যখন বড় পরিমাণে পূর্ণসংখ্যার সাথে কাজ করতে হয়, যেমন সায়েন্টিফিক বা ম্যাথমেটিক্যাল অপারেশনের ক্ষেত্রে উপকারী।
IntBuffer তৈরি করা
import java.nio.IntBuffer;
public class IntBufferExample {
public static void main(String[] args) {
// Allocate an IntBuffer with capacity 5
IntBuffer buffer = IntBuffer.allocate(5);
// Put some integers into the buffer
buffer.put(1);
buffer.put(2);
buffer.put(3);
// Flip the buffer for reading
buffer.flip();
// Read the data
while (buffer.hasRemaining()) {
System.out.println(buffer.get());
}
}
}
IntBuffer এর প্রধান ফিচার
- put(): পূর্ণসংখ্যা লেখার জন্য ব্যবহৃত হয়।
- get(): পূর্ণসংখ্যা পড়ার জন্য ব্যবহৃত হয়।
- flip(): ডেটা লেখার পরে সেটি পড়তে প্রস্তুত করতে ব্যবহৃত হয়।
- clear(): নতুন ডেটা লেখার জন্য বাফার পুনরায় প্রস্তুত করা হয়।
LongBuffer, FloatBuffer, এবং DoubleBuffer
Java NIO আরও কিছু বিশেষ Buffer প্রদান করে যা বিশেষ ধরনের ডেটা প্রক্রিয়া করতে সক্ষম:
LongBuffer
LongBuffer ব্যবহার করা হয় যখন বড় পূর্ণসংখ্যার (long) ডেটার সাথে কাজ করতে হয়।
import java.nio.LongBuffer;
public class LongBufferExample {
public static void main(String[] args) {
LongBuffer buffer = LongBuffer.allocate(5);
buffer.put(100L);
buffer.put(200L);
buffer.flip();
while (buffer.hasRemaining()) {
System.out.println(buffer.get());
}
}
}
FloatBuffer
FloatBuffer ব্যবহার করা হয় যখন ভাসমান পয়েন্ট সংখ্যার (float) সাথে কাজ করতে হয়।
import java.nio.FloatBuffer;
public class FloatBufferExample {
public static void main(String[] args) {
FloatBuffer buffer = FloatBuffer.allocate(5);
buffer.put(1.5f);
buffer.put(2.5f);
buffer.flip();
while (buffer.hasRemaining()) {
System.out.println(buffer.get());
}
}
}
DoubleBuffer
DoubleBuffer ব্যবহার করা হয় যখন দ্বৈত ভাসমান পয়েন্ট সংখ্যার (double) সাথে কাজ করতে হয়।
import java.nio.DoubleBuffer;
public class DoubleBufferExample {
public static void main(String[] args) {
DoubleBuffer buffer = DoubleBuffer.allocate(5);
buffer.put(1.5);
buffer.put(2.5);
buffer.flip();
while (buffer.hasRemaining()) {
System.out.println(buffer.get());
}
}
}
Java NIO Buffers, যেমন ByteBuffer, CharBuffer, IntBuffer, LongBuffer, FloatBuffer, এবং DoubleBuffer একটি গুরুত্বপূর্ণ ভূমিকা পালন করে ডেটা প্রক্রিয়া এবং I/O অপারেশনগুলো দ্রুত এবং দক্ষতার সাথে পরিচালনার জন্য। এগুলি Java অ্যাপ্লিকেশনগুলিতে ডেটা হ্যান্ডলিংয়ের পারফরম্যান্স উন্নত করতে সহায়ক, বিশেষ করে যখন বড় পরিমাণের ডেটা এবং ইন্টারেক্টিভ I/O অপারেশন প্রয়োজন হয়।
Read more