Apache Commons IO লাইব্রেরির একটি গুরুত্বপূর্ণ ফিচার হল FileAlterationListener, যা ব্যবহার করে আপনি একটি নির্দিষ্ট ডিরেক্টরি বা ফোল্ডারে ফাইল পরিবর্তন, নতুন ফাইল যোগ, অথবা ফাইল মুছে ফেলার মতো ইভেন্টগুলি সনাক্ত করতে পারেন। এটি এমন একটি উপায় প্রদান করে, যা আপনার প্রোগ্রামে বাস্তব সময়ে ফাইল পরিবর্তন মনিটর করতে সহায়তা করে।
ফাইলের পরিবর্তন ট্র্যাক করা বিভিন্ন ধরণের অ্যাপ্লিকেশনে গুরুত্বপূর্ণ, যেমন ফাইল সিস্টেম মনিটরিং, লগ ফাইল পর্যবেক্ষণ, বা ডাটা ব্যাকআপ সিস্টেম।
FileAlterationListener একটি ইন্টারফেস যা আপনাকে ফাইল পরিবর্তন সনাক্ত করার জন্য কিছু মেথড প্রদান করে, যেমন:
এগুলি আপনার মনিটরিং প্রক্রিয়ায় ফাইল বা ডিরেক্টরির ওপর যেকোনো পরিবর্তন সনাক্ত করতে সাহায্য করে।
এখানে FileAlterationListener ব্যবহার করে একটি ডিরেক্টরি মনিটর করা হচ্ছে, যেখানে ফাইল তৈরি, পরিবর্তন বা মুছে ফেলা হলে তা লগ আউটপুটে প্রদর্শিত হবে।
import org.apache.commons.io.FileAlterationListener;
import org.apache.commons.io.FileAlterationObserver;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.monitor.FileAlterationMonitor;
import org.apache.commons.io.monitor.FileAlterationPolicy;
import java.io.File;
import java.io.IOException;
public class FileChangeMonitorExample {
public static void main(String[] args) throws Exception {
// Directory to be monitored
File directoryToMonitor = new File("path/to/directory");
// Create a FileAlterationObserver for the directory
FileAlterationObserver observer = new FileAlterationObserver(directoryToMonitor);
// Add a listener to monitor file changes
observer.addListener(new FileAlterationListener() {
@Override
public void onFileCreate(File file) {
System.out.println("File created: " + file.getName());
}
@Override
public void onFileChange(File file) {
System.out.println("File changed: " + file.getName());
}
@Override
public void onFileDelete(File file) {
System.out.println("File deleted: " + file.getName());
}
@Override
public void onDirectoryCreate(File directory) {
System.out.println("Directory created: " + directory.getName());
}
@Override
public void onDirectoryChange(File directory) {
System.out.println("Directory changed: " + directory.getName());
}
@Override
public void onDirectoryDelete(File directory) {
System.out.println("Directory deleted: " + directory.getName());
}
});
// Monitor the directory for changes every 1 second
FileAlterationMonitor monitor = new FileAlterationMonitor(1000);
monitor.addObserver(observer);
// Start monitoring
monitor.start();
System.out.println("Monitoring started. Press Ctrl+C to stop.");
}
}
FileAlterationObserver
ক্লাসটি একটি নির্দিষ্ট ডিরেক্টরি পর্যবেক্ষণ (monitor) করতে ব্যবহৃত হয়।FileAlterationListener
ইন্টারফেসের মাধ্যমে ফাইলের উপর ঘটে যাওয়া পরিবর্তনগুলি সনাক্ত করা হয়।onFileCreate()
– নতুন ফাইল তৈরি হলে এই মেথড কল হবে।onFileChange()
– ফাইল পরিবর্তিত হলে এই মেথড কল হবে।onFileDelete()
– ফাইল মুছে ফেলা হলে এই মেথড কল হবে।onDirectoryCreate()
, onDirectoryChange()
, onDirectoryDelete()
– ডিরেক্টরি সম্পর্কিত পরিবর্তন সনাক্ত করার জন্য ব্যবহৃত হয়।FileAlterationMonitor
১ সেকেন্ড অন্তর ডিরেক্টরিটি মনিটর করে এবং যেকোনো পরিবর্তন হলে সংশ্লিষ্ট মেথড কল হয়।আপনি যখন FileAlterationMonitor ব্যবহার করেন, তখন এটি নির্দিষ্ট সময় অন্তর ডিরেক্টরি মনিটর করে। এই সময়টি কাস্টমাইজ করা যায়। উদাহরণস্বরূপ, প্রতিটি ১ সেকেন্ড পর মনিটরিং করা হচ্ছে, তবে এটি বাড়ানো বা কমানো সম্ভব।
FileAlterationMonitor monitor = new FileAlterationMonitor(2000); // 2 seconds interval
আপনি যদি চান, তাহলে আলাদা FileAlterationListener ইনস্ট্যান্স ব্যবহার করে একাধিক ডিরেক্টরি বা ফাইলের জন্য আলাদা মনিটরিং লজিক প্রয়োগ করতে পারেন।
ফাইল বা ডিরেক্টরি পরিবর্তনের সময় System.out.println() এর মাধ্যমে কনসোল বা লগে আউটপুট দিতে পারবেন, যা আপনাকে ট্র্যাক করতে সাহায্য করবে কোন ফাইলের উপর পরিবর্তন হয়েছে।
Apache Commons IO - FileAlterationListener আপনাকে সহজেই ফাইল বা ডিরেক্টরি পর্যবেক্ষণ করার সুযোগ দেয়। এটি ফাইলের পরিবর্তন সনাক্ত করতে ব্যবহৃত হয় এবং ফাইল তৈরি, পরিবর্তন বা মুছে ফেলা হলে বিভিন্ন কার্যক্রম সম্পাদন করতে সাহায্য করে। আপনি এটি ব্যবহার করে আপনার Java অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং কার্যকরী করতে পারেন, যেমন লগ ফাইল মনিটরিং, ডেটা ব্যাকআপ, এবং অন্যান্য অনেক ফাইল সিস্টেম সম্পর্কিত কার্যক্রম।
common.read_more