Directory এবং File এর Events (CREATE, MODIFY, DELETE) কিভাবে Monitor করা যায়

WatchService এবং File System Monitoring - জাভা নিও (Java Nio) - Java Technologies

284

Java NIO (New I/O) এর মধ্যে WatchService API একটি গুরুত্বপূর্ণ ফিচার যা ডিরেক্টরি এবং ফাইলের events (যেমন, CREATE, MODIFY, DELETE) মনিটর করতে ব্যবহৃত হয়। এই API ব্যবহার করে আপনি একটি ডিরেক্টরি বা ফাইল সিস্টেমের পরিবর্তনগুলো ট্র্যাক করতে পারেন এবং সেগুলির উপর বিভিন্ন কার্যক্রম পরিচালনা করতে পারেন। এটি সাধারণত ফাইল সিস্টেমে পরিবর্তন সনাক্ত করার জন্য ব্যবহৃত হয়, যেমন একটি ফাইল তৈরি, পরিবর্তিত বা মুছে ফেলা হলে তা স্বয়ংক্রিয়ভাবে ধরা যায়।

এই টিউটোরিয়ালে আমরা দেখব কিভাবে WatchService API ব্যবহার করে ফাইল সিস্টেমের ইভেন্ট (CREATE, MODIFY, DELETE) মনিটর করা যায়।


WatchService API এর ধারণা

WatchService হল Java NIO এর একটি API যা আপনাকে নির্দিষ্ট ডিরেক্টরি বা ফাইল সিস্টেমের উপর নজর রাখতে সহায়ক। আপনি একটি ডিরেক্টরি রেজিস্টার করতে পারেন, এবং যখন সেখানে কোনো পরিবর্তন হবে, তখন আপনি সেই পরিবর্তনটি WatchKey এর মাধ্যমে সনাক্ত করতে পারবেন।

মূল ধাপ:

  1. WatchService তৈরি করা: একটি WatchService অবজেক্ট তৈরি করা হয়।
  2. WatchKey তৈরি করা: একটি ডিরেক্টরি বা ফাইল সিস্টেমকে WatchService এর সাথে রেজিস্টার করা হয় এবং এর সাথে ইভেন্ট (CREATE, MODIFY, DELETE) রেজিস্টার করা হয়।
  3. Events মনিটর করা: watchKey.poll() অথবা watchKey.take() ব্যবহার করে আপনি মনিটর করা ডিরেক্টরির পরিবর্তন ট্র্যাক করতে পারেন।

WatchService API ব্যবহার করে File এবং Directory Events Monitor করা

উদাহরণ: একটি ডিরেক্টরি মনিটর করা (CREATE, MODIFY, DELETE)

এই উদাহরণে, আমরা দেখব কিভাবে একটি ডিরেক্টরি মনিটর করা যায় এবং ফাইলের পরিবর্তন (CREATE, MODIFY, DELETE) ধরা যায়।

import java.nio.file.*;
import java.nio.file.attribute.*;
import java.util.*;

public class FileWatcherExample {
    public static void main(String[] args) throws Exception {
        // WatchService তৈরি করা
        WatchService watchService = FileSystems.getDefault().newWatchService();

        // ডিরেক্টরি পাথ সেট করা (আপনার পছন্দের পাথ দিন)
        Path path = Paths.get("C:/temp"); // মনিটর করতে চাওয়া ডিরেক্টরি
        path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, 
                                      StandardWatchEventKinds.ENTRY_MODIFY, 
                                      StandardWatchEventKinds.ENTRY_DELETE);

        System.out.println("Monitoring directory: " + path.toString());

        // ইভেন্টগুলোর জন্য মনিটর করা
        while (true) {
            WatchKey key;
            try {
                key = watchService.take(); // এই মেথডটি ব্লক হবে যতক্ষণ না কোনো ইভেন্ট ঘটবে
            } catch (InterruptedException e) {
                System.out.println("Interrupted");
                return;
            }

            // WatchKey থেকে ইভেন্টগুলি প্রক্রিয়া করা
            for (WatchEvent<?> event : key.pollEvents()) {
                WatchEvent.Kind<?> kind = event.kind();

                // ফাইলের সাথে সম্পর্কিত ইভেন্ট
                Path filename = (Path) event.context();

                if (kind == StandardWatchEventKinds.ENTRY_CREATE) {
                    System.out.println("File created: " + filename);
                } else if (kind == StandardWatchEventKinds.ENTRY_MODIFY) {
                    System.out.println("File modified: " + filename);
                } else if (kind == StandardWatchEventKinds.ENTRY_DELETE) {
                    System.out.println("File deleted: " + filename);
                }
            }

            // WatchKey রিসেট করা
            boolean valid = key.reset();
            if (!valid) {
                break;  // যদি ডিরেক্টরি অন্যথায় বন্ধ হয়ে যায়
            }
        }
    }
}

কোড বিশ্লেষণ:

  1. WatchService তৈরি: FileSystems.getDefault().newWatchService() ব্যবহার করে একটি WatchService তৈরি করা হয় যা ডিরেক্টরির ইভেন্ট মনিটর করবে।
  2. ডিরেক্টরি রেজিস্টার করা: path.register() মেথড ব্যবহার করে ডিরেক্টরি রেজিস্টার করা হয় এবং এখানে তিনটি ইভেন্ট রেজিস্টার করা হয়েছে: ENTRY_CREATE, ENTRY_MODIFY, এবং ENTRY_DELETE
  3. ইভেন্ট মনিটর করা: watchService.take() মেথড দিয়ে ব্লকিং স্টাইলে ডিরেক্টরি মনিটর করা হচ্ছে এবং যখন কোনো পরিবর্তন ঘটে, তখন সেই পরিবর্তনটি WatchKey এর মাধ্যমে সনাক্ত করা হয়।
  4. ইভেন্ট প্রসেস করা: key.pollEvents() ব্যবহার করে ইভেন্টগুলো প্রসেস করা হয়, যেমন ফাইল তৈরি, পরিবর্তিত বা মুছে ফেলা।

WatchService এর প্রয়োজনীয়তা

১. ফাইল সিস্টেম মনিটরিং:

WatchService একটি অত্যন্ত কার্যকরী উপকরণ যা ফাইল সিস্টেমের উপর নজর রাখতে সাহায্য করে। এটি ডিরেক্টরি এবং ফাইলের ইভেন্ট যেমন ফাইল তৈরি, পরিবর্তন বা মুছে ফেলা ইত্যাদি সনাক্ত করতে সক্ষম।

২. অটোমেটেড সিস্টেম:

আপনি যখন একটি সিস্টেমে file monitoring সিস্টেম তৈরি করতে চান, তখন WatchService এর সাহায্যে আপনি বিভিন্ন ফাইল ইভেন্ট ট্র্যাক করতে পারেন। এটি স্বয়ংক্রিয়ভাবে ফাইল পরিবর্তন পরিচালনার জন্য উপযোগী, যেমন ফাইল ব্যাকআপ, ফাইল সেন্সিং বা লগ ফাইল সিস্টেম।

৩. রিয়েল-টাইম ইভেন্ট প্রক্রিয়া:

ফাইল সিস্টেমে পরিবর্তন সনাক্ত করার জন্য WatchService ব্যবহার করা হয়, যেখানে রিয়েল-টাইম ফাইল পরিবর্তন বা ডেটা আপডেট করার জন্য সহজেই ইভেন্ট হ্যান্ডলিং করতে পারেন।

৪. কমপ্লেক্স ফাইল সিস্টেম অপারেশন:

কোনো ফাইল সিস্টেমে অনেক ডিরেক্টরি বা ফাইল থাকলে, WatchService তার সমস্ত পরিবর্তন মনিটর করতে পারে এবং প্রয়োজনীয় কাজগুলো কার্যকরীভাবে করতে পারে। এটি বিশেষভাবে ফাইল সিঙ্ক্রোনাইজেশন এবং আর্কাইভিংয়ের জন্য উপকারী।


WatchService এর সীমাবদ্ধতা

  1. একক ডিরেক্টরি মনিটরিং: WatchService শুধুমাত্র এক ডিরেক্টরির জন্য কাজ করে, যদি আপনি একটি সমগ্র ফাইল সিস্টেম মনিটর করতে চান তবে আপনাকে একাধিক WatchService ব্যবহার করতে হবে।
  2. ব্যাচ ডেটা: কিছু ক্ষেত্রে WatchService একসাথে একাধিক ইভেন্ট পরিচালনা করতে পারে না এবং আপনাকে প্রতিটি ইভেন্টের জন্য পৃথকভাবে কাজ করতে হতে পারে।
  3. ফাইল সিস্টেমের সীমাবদ্ধতা: সব ধরনের ফাইল সিস্টেমে এটি সমানভাবে কাজ নাও করতে পারে, যেমন কিছু নেটওয়ার্ক ফাইল সিস্টেমে WatchService ঠিকমত কাজ নাও করতে পারে।

WatchService Java NIO এর একটি অত্যন্ত কার্যকরী উপাদান যা ফাইল সিস্টেমের ইভেন্ট যেমন ফাইল তৈরি, পরিবর্তন বা মুছে ফেলা মনিটর করতে ব্যবহৃত হয়। এটি খুবই কার্যকরী যখন আপনি একটি ডিরেক্টরি বা ফাইল সিস্টেমের ওপর নজর রাখতে চান এবং সেখানে ঘটিত পরিবর্তনগুলো দ্রুত সনাক্ত করতে চান। WatchService ব্যবহারে আপনি ফাইল সিস্টেমের যেকোনো পরিবর্তন সহজেই ট্র্যাক করতে পারবেন, যা আপনাকে স্বয়ংক্রিয় ফাইল সিঙ্ক্রোনাইজেশন, ব্যাকআপ, এবং ডেটা মনিটরিং করতে সহায়ক।


Content added By
Promotion

Are you sure to start over?

Loading...