Java Directory Traversing হল একটি প্রক্রিয়া যার মাধ্যমে একটি নির্দিষ্ট ডিরেক্টরির মধ্যে থাকা সব ফাইল এবং সাবডিরেক্টরি গুলি একে একে এক্সপ্লোর করা হয়। Directory Traversing সাধারণত একটি ডিরেক্টরি স্ট্রাকচার যাচাই করার জন্য ব্যবহৃত হয়, এবং Java NIO (New I/O) অথবা File API ব্যবহার করে এটি সহজে করা যায়।
নিচে একটি Java Directory Traversing Example দেয়া হলো, যা একটি নির্দিষ্ট ডিরেক্টরির মধ্যে থাকা সমস্ত ফাইল এবং সাবডিরেক্টরির নামগুলি প্রিন্ট করবে।
Directory Traversing Example in Java
1. Using File Class:
import java.io.File;
public class DirectoryTraversingExample {
public static void main(String[] args) {
// ডিরেক্টরি পাথ
String directoryPath = "path_to_your_directory"; // এখানে আপনার ডিরেক্টরি পাথ দিবেন
// ডিরেক্টরি অবজেক্ট তৈরি
File directory = new File(directoryPath);
// যদি এটি একটি ডিরেক্টরি হয়
if (directory.isDirectory()) {
// ডিরেক্টরি থেকে ফাইল ও সাবডিরেক্টরি গুলোর লিস্ট পাওয়া
String[] fileList = directory.list();
// ফাইলের নাম প্রিন্ট করা
System.out.println("Files and directories in " + directoryPath + ":");
for (String fileName : fileList) {
System.out.println(fileName);
}
} else {
System.out.println("The provided path is not a directory.");
}
}
}
Explanation:
Fileক্লাসেরlist()মেথড ব্যবহার করা হয়েছে যা ডিরেক্টরির মধ্যে থাকা সকল ফাইল এবং সাবডিরেক্টরি গুলির নাম ফেরত দেয়।isDirectory()মেথডটি চেক করে যে পাথটি একটি ডিরেক্টরি কিনা।
Output:
Files and directories in path_to_your_directory:
file1.txt
file2.pdf
subdir1
subdir2
2. Using Files and Paths (NIO):
Java 7 এ NIO (New I/O) এ কিছু নতুন ফিচার যোগ করা হয়েছে, যা ডিরেক্টরি ট্রাভার্সিং আরও সহজ এবং কার্যকরী করে। Files এবং Paths ক্লাস ব্যবহার করে ডিরেক্টরি ট্রাভার্স করা যায়।
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
public class DirectoryTraversingExample {
public static void main(String[] args) {
// ডিরেক্টরি পাথ
Path path = Paths.get("path_to_your_directory"); // এখানে আপনার ডিরেক্টরি পাথ দিবেন
try {
// Files.walkFileTree ব্যবহার করে ডিরেক্টরি ট্রাভার্স করা
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 {
// ত্রুটির জন্য মেসেজ প্রিন্ট করা
System.out.println("Failed to visit file: " + file);
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
Explanation:
Files.walkFileTree(): এটি একটি রিকার্সিভ পদ্ধতি যা ডিরেক্টরি এবং সাবডিরেক্টরিগুলির মধ্যে থাকা সমস্ত ফাইলের পাথ ট্রাভার্স করে।SimpleFileVisitor: এটি একটিFileVisitorইন্টারফেসের এক বাস্তবায়ন, যাvisitFileমেথডের মাধ্যমে ফাইলের পাথকে প্রসেস করে।
Output:
path_to_your_directory/file1.txt
path_to_your_directory/file2.pdf
path_to_your_directory/subdir1/file3.txt
path_to_your_directory/subdir2/file4.txt
Key Differences:
Fileclass: এটি পুরনো Java I/O API, যেখানে কিছু ফিচার সীমাবদ্ধ থাকে এবং কিছু পদ্ধতি অনেকটা আউটডেটেড হতে পারে।FilesandPaths(NIO): এটি Java 7 এর পরবর্তী নতুন I/O লাইব্রেরি, যা অনেক বেশি কার্যকরী, দ্রুত এবং উন্নত ফিচার প্রদান করে। এছাড়াও, এটি রিকার্সিভ ট্রাভার্সিং এবং বড় ফাইল সিস্টেমের জন্য আরও কার্যকরী।- Java File API (
Fileclass) সাধারণত ছোট ফাইল সিস্টেমের জন্য উপযুক্ত, যেখানে আপনি এক্সপ্লোর করতে চান একটি ডিরেক্টরি এবং তার মধ্যে থাকা ফাইল এবং ডিরেক্টরির নাম। - Java NIO (New I/O) (
Files,Paths) অনেক বেশি দক্ষ এবং রিকার্সিভ ট্রাভার্সিং এবং বড় ফাইল সিস্টেমের জন্য উপযুক্ত। - আপনার প্রোজেক্টের প্রয়োজনে এক বা অন্য পদ্ধতি ব্যবহার করতে হবে।
Read more