Apache Commons IO লাইব্রেরি ফাইল এবং ডিরেক্টরি সম্পর্কিত বিভিন্ন কার্যকলাপ সহজ এবং কার্যকরী করে তোলে। Recursive Directory Traversing এবং Custom Directory Walking দুটি গুরুত্বপূর্ণ কাজ, যেখানে একটি ডিরেক্টরির মধ্যে সব ফাইল বা সাবডিরেক্টরি অনুসন্ধান করা হয়, এবং যখন আমাদের কাস্টম লজিক বা ফিল্টারিং প্রয়োজন।
এই কাজগুলো সাধারণত ফাইল সিস্টেম থেকে ডেটা এক্সট্র্যাক্ট বা ম্যানিপুলেট করার জন্য ব্যবহৃত হয়। Apache Commons IO লাইব্রেরি FileUtils এবং DirectoryWalker ক্লাস সরবরাহ করে, যেগুলি রিকর্সিভ ডিরেক্টরি ট্রাভার্সিং এবং কাস্টম ডিরেক্টরি ওয়াকিং (directory walking) করতে ব্যবহৃত হয়।
FileUtils
ক্লাসের সাহায্যে সহজেই রিকর্সিভ ডিরেক্টরি ট্রাভার্সিং করা সম্ভব। FileUtils.listFiles()
মেথডটি রিকর্সিভভাবে ডিরেক্টরি এবং সাবডিরেক্টরিগুলির মধ্যে ফাইলগুলোকে একটি তালিকায় যুক্ত করে।
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
public class RecursiveDirectoryTraversingExample {
public static void main(String[] args) {
File directory = new File("path/to/your/directory");
// .txt এক্সটেনশন সহ সব ফাইল লিস্ট করতে রিকর্সিভ ফাইল লিস্টিং
Collection<File> files = FileUtils.listFiles(directory, new String[] {"txt"}, true);
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
}
}
FileUtils.listFiles(directory, new String[] {"txt"}, true)
মেথডটি ডিরেক্টরি এবং তার সাবডিরেক্টরিগুলির মধ্যে .txt
এক্সটেনশন সহ সমস্ত ফাইল রিকর্সিভভাবে খুঁজে বের করে।true
বলে যে এটি রিকর্সিভভাবে ডিরেক্টরি ট্রাভার্স করবে।যখন আপনি কাস্টম লজিক ব্যবহার করে ডিরেক্টরি ট্রাভার্স করতে চান, তখন DirectoryWalker
ক্লাসটি খুবই উপকারী। এটি আপনাকে ডিরেক্টরি এবং ফাইলের প্রতি কাস্টম আচরণ নির্ধারণ করতে দেয়।
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.apache.commons.io.filefilter.FileFilterUtils;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
public class CustomDirectoryWalkingExample {
public static void main(String[] args) {
File directory = new File("path/to/your/directory");
// ডিরেক্টরি ওয়াকিং কাস্টম ফিল্টার ব্যবহার করে
Iterator<File> iterator = FileUtils.iterateFiles(directory, FileFilterUtils.suffixFileFilter(".txt"), TrueFileFilter.TRUE);
while (iterator.hasNext()) {
File file = iterator.next();
// কাস্টম লজিক প্রয়োগ
System.out.println("Processing file: " + file.getAbsolutePath());
}
}
}
FileUtils.iterateFiles(directory, FileFilterUtils.suffixFileFilter(".txt"), TrueFileFilter.TRUE)
মেথডটি .txt
এক্সটেনশন সহ সমস্ত ফাইল ডিরেক্টরি এবং তার সাবডিরেক্টরিগুলির মধ্যে খুঁজে বের করে।FileFilterUtils.suffixFileFilter(".txt")
ফিল্টার ব্যবহার করে শুধুমাত্র .txt
এক্সটেনশন সহ ফাইলগুলিকে নির্বাচিত করা হয়েছে।TrueFileFilter.TRUE
সব ফাইল এবং ডিরেক্টরিকে ফিল্টার হিসেবে গ্রহণ করে (এটি কাস্টম ফিল্টার নির্ধারণে সাহায্য করতে পারে)।DirectoryWalker
ক্লাস আরও কাস্টমাইজড এবং উন্নত ডিরেক্টরি ট্রাভার্সিংয়ের জন্য ব্যবহৃত হয়। এই ক্লাসের মাধ্যমে আপনি ফাইল এবং ডিরেক্টরি ট্রাভার্স করার জন্য নিজস্ব কাস্টম লজিক সংজ্ঞায়িত করতে পারেন।
DirectoryWalker
ইমপ্লিমেন্টেশনimport org.apache.commons.io.DirectoryWalker;
import java.io.File;
import java.io.IOException;
public class CustomDirectoryWalkerExample extends DirectoryWalker {
public CustomDirectoryWalkerExample() {
// কাস্টম ইমপ্লিমেন্টেশনের জন্য প্রয়োজনীয় কন্সট্রাক্টর
}
@Override
protected void handleFile(File file, int depth) {
// কাস্টম লজিক যা ফাইলের উপর প্রয়োগ হবে
System.out.println("Processing file: " + file.getAbsolutePath());
}
@Override
protected void handleDirectory(File directory, int depth) {
// কাস্টম লজিক যা ডিরেক্টরির উপর প্রয়োগ হবে
System.out.println("Entering directory: " + directory.getAbsolutePath());
}
public static void main(String[] args) throws IOException {
File directory = new File("path/to/your/directory");
// DirectoryWalker এর কাস্টম ইমপ্লিমেন্টেশন ব্যবহার করা
CustomDirectoryWalkerExample walker = new CustomDirectoryWalkerExample();
walker.walk(directory, null); // `null` pass করা হয় কারণ এখানে ফিল্টার ব্যবহার করা হয়নি
}
}
handleFile(File file, int depth)
: এই মেথডটি কাস্টম লজিক প্রয়োগ করতে ব্যবহৃত হয়, যা প্রতিটি ফাইলের জন্য চলে।handleDirectory(File directory, int depth)
: এই মেথডটি ডিরেক্টরি ট্রাভার্স করার সময় প্রতিটি ডিরেক্টরির জন্য চলে।DirectoryWalker
অত্যন্ত শক্তিশালী এবং কাস্টম ডিরেক্টরি ওয়াকিংয়ের জন্য ব্যবহার করা হয়, যেখানে আপনি ফাইল এবং ডিরেক্টরি সম্পর্কিত নিজের লজিক প্রয়োগ করতে পারেন।
Recursive Directory Traversing এবং Custom Directory Walking অ্যাপাচি কমন্স আইও লাইব্রেরির দুটি অত্যন্ত গুরুত্বপূর্ণ ফিচার যা ফাইল সিস্টেমে ডিরেক্টরি ট্রাভার্সিং এবং ফাইলের প্রক্রিয়াকরণের কাজগুলো সহজ করে তোলে।
এই দুটি পদ্ধতির মাধ্যমে আপনি জটিল ফাইল সিস্টেমের কাজগুলো খুব সহজে এবং কার্যকরীভাবে পরিচালনা করতে পারবেন।
common.read_more