Multiple Arguments হ্যান্ডল করা

Advanced Option এবং Argument হ্যান্ডলিং - অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

267

অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) লাইব্রেরি একটি শক্তিশালী টুল যা কমান্ড লাইন আর্গুমেন্টস পার্সিংয়ের জন্য ব্যবহৃত হয়। অনেক সময় আপনাকে একটি অপশন বা সাব-কমান্ডের জন্য একাধিক আর্গুমেন্ট নিতে হতে পারে, যেমন একাধিক ফাইলের পাথ বা কয়েকটি ভ্যালু। অ্যাপাচি কমন্স সিআলআই এভাবে একাধিক আর্গুমেন্টকে সহজেই হ্যান্ডল করার জন্য সুবিধা প্রদান করে, যা ডেভেলপারদের জন্য খুবই সহায়ক।

Multiple Arguments হ্যান্ডল করার প্রয়োজনীয়তা:

  • একাধিক মানের ইনপুট: কিছু অপশন বা সাব-কমান্ডে একাধিক আর্গুমেন্ট পাস করার প্রয়োজন হতে পারে। যেমন, একাধিক ফাইল বা ডেটা পয়েন্ট প্রসেস করা।
  • ডাইনামিক আর্গুমেন্টস: যেখানে ব্যবহারকারী কোনো নির্দিষ্ট সংখ্যা নির্ধারণ না করে একাধিক ভ্যালু পাস করতে পারে।

অ্যাপাচি কমন্স সিআলআই একাধিক আর্গুমেন্ট গ্রহণ করার জন্য একটি সহজ পদ্ধতি সরবরাহ করে। চলুন, দেখুন কীভাবে একাধিক আর্গুমেন্ট হ্যান্ডল করা যায়।


Multiple Arguments হ্যান্ডল করার পদ্ধতি

১. একাধিক আর্গুমেন্ট গ্রহণ করা

এক্ষেত্রে, একটি অপশন তৈরি করা হয় যাতে একাধিক মান (values) পাস করা যায়। Option ক্লাসের hasArgs() মেথড ব্যবহার করে আপনি নির্দিষ্ট করতে পারেন যে একটি অপশন একাধিক আর্গুমেন্ট গ্রহণ করবে।

উদাহরণ: একাধিক আর্গুমেন্ট গ্রহণ

import org.apache.commons.cli.*;

public class MultipleArgumentsExample {
    public static void main(String[] args) {
        // অপশন তৈরি করা
        Options options = new Options();
        
        Option filesOption = new Option("f", "files", true, "List of files");
        filesOption.setArgs(Option.UNLIMITED_VALUES);  // একাধিক আর্গুমেন্ট পাস করার অনুমতি
        options.addOption(filesOption);

        // কমান্ড লাইন পার্সার তৈরি করা
        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // কমান্ড লাইন আর্গুমেন্টস পার্স করা
            cmd = parser.parse(options, args);

            // পাস করা ফাইলের নামগুলো প্রিন্ট করা
            if (cmd.hasOption("f")) {
                String[] files = cmd.getOptionValues("f");
                System.out.println("Files to process:");
                for (String file : files) {
                    System.out.println(file);
                }
            } else {
                System.out.println("No files provided.");
            }

        } catch (ParseException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

এখানে, -f অপশনের মাধ্যমে একাধিক ফাইল পাথ গ্রহণ করা হচ্ছে। setArgs(Option.UNLIMITED_VALUES) ব্যবহার করা হয়েছে যাতে যে কোনো সংখ্যক আর্গুমেন্ট পাস করা যায়।

কমান্ড লাইন আর্গুমেন্টস

java MultipleArgumentsExample -f file1.txt file2.txt file3.txt

এই কমান্ডে, -f অপশনের মাধ্যমে তিনটি ফাইল পাথ পাস করা হচ্ছে, এবং প্রোগ্রামটি সেগুলোর প্রতিটির নাম প্রিন্ট করবে:

Files to process:
file1.txt
file2.txt
file3.txt

এখানে, file1.txt, file2.txt, এবং file3.txt হল একাধিক আর্গুমেন্ট যা -f অপশনের মাধ্যমে পাস করা হয়েছে।


২. একাধিক আর্গুমেন্টের জন্য বিকল্প ফ্ল্যাগ

আপনি Option.UNLIMITED_VALUES ছাড়াও একাধিক মান গ্রহণ করতে hasArgs() মেথডের মাধ্যমে নির্দিষ্ট সংখ্যা নির্ধারণ করতে পারেন। যেমন, এক বা একাধিক মান গ্রহণ করার জন্য এটি ব্যবহৃত হতে পারে।

উদাহরণ: সীমিত সংখ্যক আর্গুমেন্ট গ্রহণ করা

import org.apache.commons.cli.*;

public class LimitedArgumentsExample {
    public static void main(String[] args) {
        // অপশন তৈরি করা
        Options options = new Options();
        
        Option directoryOption = new Option("d", "directories", true, "List of directories");
        directoryOption.setArgs(2); // দুটি আর্গুমেন্ট পাস করার অনুমতি
        options.addOption(directoryOption);

        // কমান্ড লাইন পার্সার তৈরি করা
        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // কমান্ড লাইন আর্গুমেন্টস পার্স করা
            cmd = parser.parse(options, args);

            // পাস করা ডিরেক্টরি নামগুলো প্রিন্ট করা
            if (cmd.hasOption("d")) {
                String[] directories = cmd.getOptionValues("d");
                System.out.println("Directories to process:");
                for (String dir : directories) {
                    System.out.println(dir);
                }
            } else {
                System.out.println("No directories provided.");
            }

        } catch (ParseException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

এখানে, -d অপশনের মাধ্যমে দুইটি ডিরেক্টরি পাথ নেওয়া হচ্ছে। setArgs(2) ব্যবহার করে আপনি দুটি আর্গুমেন্ট গ্রহণ করতে নির্দেশ দিতে পারেন।

কমান্ড লাইন আর্গুমেন্টস

java LimitedArgumentsExample -d dir1 dir2

এখানে, dir1 এবং dir2 হল দুটি আর্গুমেন্ট যা -d অপশনের মাধ্যমে পাস করা হয়েছে।


সারাংশ

অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) লাইব্রেরি একাধিক আর্গুমেন্ট হ্যান্ডল করার জন্য শক্তিশালী সুবিধা প্রদান করে। আপনি setArgs() এবং Option.UNLIMITED_VALUES ব্যবহার করে একাধিক আর্গুমেন্ট পাস করতে পারেন এবং তা প্রোগ্রামের ভিতরে সঠিকভাবে পার্স করতে পারেন। এটি ডেভেলপারদের জন্য খুবই সহায়ক যখন একাধিক ভ্যালু বা ইনপুট প্যারামিটার প্রক্রিয়া করার প্রয়োজন হয়, যেমন একাধিক ফাইল পাথ, ডিরেক্টরি পাথ, অথবা ডেটা পয়েন্ট।

Content added By
Promotion

Are you sure to start over?

Loading...