Java NIO 2.0 (Java New I/O 2.0) হল Java 7 সংস্করণে অন্তর্ভুক্ত একটি বড় আপডেট যা Java NIO API-র উন্নত সংস্করণ। এটি file I/O, asynchronous I/O, path manipulation, file system monitoring, এবং আরও অনেক সুবিধা নিয়ে এসেছে। Java NIO 2.0 প্রধানত ফাইল সিস্টেম এবং নন-ব্লকিং I/O অপারেশনকে আরও সহজ, দ্রুত এবং কার্যকরী করে তোলে।
Java NIO 2.0 এর সাথে, Java ডেভেলপাররা নতুন API-গুলো ব্যবহার করে ফাইল সিস্টেমের উপর দ্রুত ও কার্যকরীভাবে কাজ করতে পারে, এমনকি বিভিন্ন ফাইল সিস্টেমের মধ্যে আন্তঃক্রিয়া (interoperability) উন্নত হয়।
এখানে Java NIO 2.0 এর প্রধান কিছু ফিচার আলোচনা করা হবে।
Java NIO 2.0 এর প্রধান ফিচারগুলো
১. Path API
Java NIO 2.0-এ নতুন Path API যোগ করা হয়েছে, যা ফাইল এবং ডিরেক্টরি সম্পর্কিত বিভিন্ন অপারেশন সহজে সম্পাদন করতে সহায়ক। Path ক্লাসটি ফাইল সিস্টেমের একটি নতুন প্রকারের অবজেক্ট প্রদান করে যা File ক্লাসের চেয়ে আরও শক্তিশালী এবং নমনীয়।
- Path ব্যবহার করে সহজে ফাইল ও ডিরেক্টরি গুলি পরিচালনা করা যায়। এটি ফাইলের অবস্থানকে দৃশ্যমান এবং সহজ করে তোলে।
উদাহরণ: Path API ব্যবহার করা
import java.nio.file.*;
public class PathExample {
public static void main(String[] args) {
Path path = Paths.get("example.txt");
System.out.println("File name: " + path.getFileName());
System.out.println("File extension: " + path.toAbsolutePath());
}
}
এখানে, Paths.get() মেথডের মাধ্যমে ফাইল পাথ তৈরি করা হয়েছে এবং তারপর ফাইলের নাম এবং এক্সটেনশন পাওয়া যাচ্ছে।
২. FileSystem API
Java NIO 2.0 এ নতুন FileSystem API যোগ করা হয়েছে, যা file systems এর মধ্যে কাজ করতে সহায়তা করে। এটি বিভিন্ন প্ল্যাটফর্ম এবং অপারেটিং সিস্টেমের ফাইল সিস্টেমের সাথে যোগাযোগ করতে সক্ষম। এই API ব্যবহারের মাধ্যমে আপনি বিভিন্ন ফাইল সিস্টেম (যেমন local file system, zip file system) ইন্টারঅ্যাক্ট করতে পারবেন।
- FileSystems.getDefault(): এটি আপনার ডিফল্ট ফাইল সিস্টেম রিটার্ন করে।
- FileSystems.newFileSystem(): এটি একটি নতুন ফাইল সিস্টেম ইনস্ট্যান্স তৈরি করে।
উদাহরণ: FileSystem API ব্যবহার করা
import java.nio.file.*;
import java.nio.file.attribute.*;
public class FileSystemExample {
public static void main(String[] args) {
FileSystem fs = FileSystems.getDefault();
System.out.println("File System: " + fs);
}
}
এখানে, FileSystems.getDefault() মেথডটি ডিফল্ট ফাইল সিস্টেম রিটার্ন করে এবং তারপরে তা প্রিন্ট করা হয়।
৩. Asynchronous I/O
Java NIO 2.0-এ Asynchronous I/O (AIO) যোগ করা হয়েছে, যা নন-ব্লকিং I/O অপারেশন সম্পাদন করার জন্য ব্যবহৃত হয়। এর মাধ্যমে একাধিক I/O অপারেশন একযোগে সম্পন্ন করা যায় এবং থ্রেড ব্লক না করে কাজ করা সম্ভব হয়। Asynchronous I/O, যেমন ফাইল রিড বা রাইট অপারেশন, দ্রুত এবং স্কেলেবল I/O অপারেশন নিশ্চিত করে।
- AsynchronousFileChannel এবং AsynchronousSocketChannel এর মাধ্যমে এ ধরনের অপারেশন সম্পাদিত হয়।
উদাহরণ: AsynchronousFileChannel ব্যবহার করা
import java.nio.*;
import java.nio.channels.*;
import java.io.*;
import java.nio.file.*;
public class AsynchronousFileExample {
public static void main(String[] args) throws IOException {
AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(Paths.get("example.txt"),
StandardOpenOption.READ, StandardOpenOption.WRITE);
ByteBuffer buffer = ByteBuffer.allocate(1024);
fileChannel.read(buffer, 0, null, new CompletionHandler<Integer, Object>() {
public void completed(Integer result, Object attachment) {
System.out.println("File read successfully.");
}
public void failed(Throwable exc, Object attachment) {
exc.printStackTrace();
}
});
}
}
এখানে AsynchronousFileChannel ব্যবহার করে ফাইল পড়া হচ্ছে এবং এতে CompletionHandler দিয়ে নোটিফিকেশন পাওয়া যাচ্ছে।
৪. WatchService API
WatchService API Java NIO 2.0-এ একটি গুরুত্বপূর্ণ ফিচার হিসেবে এসেছে। এটি ফাইল সিস্টেম মনিটরিংয়ের জন্য ব্যবহৃত হয়, যেমন ফাইল তৈরি, মুছে ফেলা বা পরিবর্তন হওয়ার ঘটনা পর্যবেক্ষণ করতে। WatchService ব্যবহার করে আপনি একটি ডিরেক্টরিতে ফাইল সিস্টেমের পরিবর্তন ট্র্যাক করতে পারবেন।
- WatchService ক্লাস এবং WatchKey ব্যবহারের মাধ্যমে আপনি ডিরেক্টরি মনিটর করতে পারবেন।
উদাহরণ: WatchService ব্যবহার করা
import java.nio.file.*;
import java.nio.file.attribute.*;
import static java.nio.file.StandardWatchEventKinds.*;
public class WatchServiceExample {
public static void main(String[] args) throws Exception {
Path path = Paths.get("exampleDir");
WatchService watchService = FileSystems.getDefault().newWatchService();
path.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
while (true) {
WatchKey key = watchService.take();
for (WatchEvent<?> event : key.pollEvents()) {
System.out.println(event.kind() + " : " + event.context());
}
key.reset();
}
}
}
এখানে WatchService ব্যবহার করে একটি ডিরেক্টরি মনিটর করা হচ্ছে এবং ফাইল তৈরি, মুছে ফেলা বা পরিবর্তন হলে তা প্রিন্ট করা হচ্ছে।
৫. File I/O Enhancements
Java NIO 2.0 তে File I/O অপারেশনগুলি উন্নত করা হয়েছে, যা ফাইলের উপরে সিঙ্ক্রোনাস এবং অ্যাসিঙ্ক্রোনাস I/O সমর্থন করে। এর ফলে আপনি বৃহৎ আকারের ফাইল এবং ডিরেক্টরি অপারেশন আরও দ্রুত এবং দক্ষভাবে করতে পারবেন।
- Files.copy(), Files.move(), Files.delete() ইত্যাদি মেথডগুলির মাধ্যমে সহজেই ফাইল বা ডিরেক্টরি পরিচালনা করা সম্ভব।
- FileChannel এবং ByteBuffer ব্যবহারের মাধ্যমে ফাইল রিড/রাইট অপারেশন আরও দ্রুত করা যায়।
Java NIO 2.0 একটি শক্তিশালী ফাইল সিস্টেম API যা Java 7-এ পরিচিতি পায়। এটি অনেক গুরুত্বপূর্ণ ফিচার প্রদান করে যা ডেভেলপারদের জন্য ফাইল এবং ডিরেক্টরি পরিচালনা, ফাইল সিস্টেম মনিটরিং, অ্যাসিঙ্ক্রোনাস I/O এবং আরও অনেক কিছু সহজ করে তোলে। এই ফিচারগুলো ব্যবহার করে, আপনি বড় এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে সক্ষম হবেন যা উচ্চ পারফরম্যান্স এবং কার্যকারিতা প্রদান করবে।
Read more