Java NIO (New Input/Output) একটি শক্তিশালী API যা উন্নত ফাইল I/O এবং ডিরেক্টরি ট্র্যাভার্সিং সরবরাহ করে। java.nio.file প্যাকেজটি Java NIO এর অংশ এবং এটি ডিরেক্টরি ট্র্যাভার্সিং, ফাইল মেটাডেটা অ্যাক্সেস, এবং ফাইল অপারেশন সম্পাদন করার জন্য আধুনিক এবং কার্যকরী উপায় প্রদান করে। Java NIO এর মাধ্যমে আপনি দ্রুত এবং কার্যকরভাবে ফাইল সিস্টেম পরিচালনা করতে পারেন।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Java NIO ব্যবহার করে ডিরেক্টরি ট্র্যাভার্সিং এবং ফাইল মেটাডেটা অ্যাক্সেস করা যায়।
Directory Traversing (ডিরেক্টরি ট্র্যাভার্সিং)
Java NIO তে Directory Traversing করতে Files.walk() বা Files.walkFileTree() মেথড ব্যবহার করা হয়। এগুলি আপনাকে একটি ডিরেক্টরির সমস্ত ফাইল এবং সাবডিরেক্টরি অনুসন্ধান করতে সহায়ক।
Files.walk() ব্যবহার করা
Files.walk() মেথড ব্যবহার করে আপনি একটি ডিরেক্টরির সমস্ত ফাইল এবং সাবডিরেক্টরি রিকার্সিভভাবে ট্র্যাভার্স করতে পারেন।
উদাহরণ:
import java.nio.file.*;
import java.io.IOException;
import java.util.stream.Stream;
public class DirectoryTraversingExample {
public static void main(String[] args) throws IOException {
Path path = Paths.get("C:/exampleDirectory");
try (Stream<Path> paths = Files.walk(path)) {
paths.filter(Files::isRegularFile)
.forEach(System.out::println);
}
}
}
এখানে, Files.walk() মেথডটি C:/exampleDirectory ডিরেক্টরির সব ফাইল এবং সাবডিরেক্টরি ট্র্যাভার্স করছে। filter(Files::isRegularFile) ব্যবহার করে শুধুমাত্র ফাইলগুলি প্রদর্শন করা হচ্ছে, ডিরেক্টরি নয়।
Files.walkFileTree() ব্যবহার করা
Files.walkFileTree() ব্যবহার করলে, আপনি একটি কাস্টম ভিজিটর ক্লাস তৈরি করে ডিরেক্টরি ট্র্যাভার্সিং করতে পারবেন, যা আরও নির্দিষ্ট কাজ যেমন ফাইল ফিল্টারিং বা কাস্টম কার্যকলাপ করার সুযোগ দেয়।
উদাহরণ:
import java.nio.file.*;
import java.io.IOException;
import java.nio.file.attribute.BasicFileAttributes;
public class DirectoryWalkFileTreeExample {
public static void main(String[] args) throws IOException {
Path path = Paths.get("C:/exampleDirectory");
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
}
}
এখানে, Files.walkFileTree() এবং SimpleFileVisitor ব্যবহার করে C:/exampleDirectory ডিরেক্টরির সব ফাইল ট্র্যাভার্স করা হচ্ছে এবং visitFile() মেথডে প্রতিটি ফাইলের পাথ প্রিন্ট করা হচ্ছে।
File Metadata Access (ফাইল মেটাডেটা অ্যাক্সেস)
Java NIO তে File Metadata অ্যাক্সেস করতে Files এবং BasicFileAttributes ব্যবহার করা হয়। ফাইলের মেটাডেটা অন্তর্ভুক্ত হতে পারে ফাইলের সাইজ, তৈরি হওয়ার তারিখ, অবস্থা (Readable, Writable), এবং অন্যান্য বৈশিষ্ট্য। Java NIO এর মাধ্যমে আপনি সহজেই ফাইলের মেটাডেটা অ্যাক্সেস করতে পারেন।
Files.readAttributes() ব্যবহার করা
Files.readAttributes() মেথড ব্যবহার করে ফাইলের মেটাডেটা এক্সেস করা হয়। এটি ফাইলের বিভিন্ন বৈশিষ্ট্য যেমন সাইজ, তৈরি হওয়া তারিখ, অনুমতি (permissions) ইত্যাদি ফিরিয়ে দেয়।
উদাহরণ:
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.io.IOException;
public class FileMetadataAccessExample {
public static void main(String[] args) throws IOException {
Path path = Paths.get("C:/exampleDirectory/exampleFile.txt");
BasicFileAttributes attrs = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("File size: " + attrs.size() + " bytes");
System.out.println("Creation time: " + attrs.creationTime());
System.out.println("Last modified time: " + attrs.lastModifiedTime());
System.out.println("Is directory: " + attrs.isDirectory());
System.out.println("Is regular file: " + attrs.isRegularFile());
}
}
এখানে, Files.readAttributes() মেথড ব্যবহার করে exampleFile.txt ফাইলের মেটাডেটা এক্সেস করা হচ্ছে, যেমন সাইজ, তৈরি হওয়ার সময়, শেষ পরিবর্তনের সময়, এবং এটি একটি ফাইল কি না, ডিরেক্টরি কি না, তা যাচাই করা হচ্ছে।
Files.getOwner() ব্যবহার করা
এছাড়া, ফাইলের মালিকানা সম্পর্কিত তথ্যও Files.getOwner() মেথডের মাধ্যমে পাওয়া যায়।
উদাহরণ:
import java.nio.file.*;
import java.nio.file.attribute.UserPrincipal;
import java.io.IOException;
public class FileOwnerExample {
public static void main(String[] args) throws IOException {
Path path = Paths.get("C:/exampleDirectory/exampleFile.txt");
UserPrincipal owner = Files.getOwner(path);
System.out.println("File owner: " + owner.getName());
}
}
এখানে, Files.getOwner() মেথড ব্যবহার করে exampleFile.txt ফাইলের মালিকের নাম প্রিন্ট করা হচ্ছে।
Java NIO তে Directory Traversing এবং File Metadata Access অত্যন্ত গুরুত্বপূর্ণ ফিচারগুলি। Files.walk() এবং Files.walkFileTree() ব্যবহার করে ডিরেক্টরি এবং সাবডিরেক্টরি ট্র্যাভার্স করা সহজ, এবং Files.readAttributes() বা Files.getOwner() এর মাধ্যমে ফাইলের মেটাডেটা সহজেই অ্যাক্সেস করা যায়। Java NIO এর এই ক্ষমতাগুলি বিশেষভাবে বড় আকারের ডেটাসেট, ফাইল সিস্টেম পরিচালনা এবং ইফিশিয়েন্ট I/O অপারেশন করতে সাহায্য করে।
Read more