Properties ফাইল থেকে Command Line Options লোড করা

Properties এবং Configuration ফাইল থেকে Argument লোড করা - অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

248

Properties ফাইল কি?

Properties ফাইল হল একটি সাধারণ কনফিগারেশন ফাইল যা সাধারণত কী-মান জোড়া (key-value pairs) ধারণ করে। এই ফাইলটি অ্যাপ্লিকেশন কনফিগারেশন বা ইনপুট ভ্যালু সংরক্ষণ করার জন্য ব্যবহৃত হয়। এটি সাধারণত .properties এক্সটেনশনে থাকে এবং Java অ্যাপ্লিকেশনগুলিতে কনফিগারেশন, আর্গুমেন্ট, অথবা অন্যান্য প্রয়োজনীয় ডাটা সংরক্ষণের জন্য ব্যবহৃত হয়।

যেমন:

file=input.txt
verbose=true

Properties ফাইল থেকে Command Line Options লোড করা

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

এখানে আমরা দেখব কিভাবে একটি Properties ফাইল থেকে কমান্ড লাইন অপশনগুলি লোড করতে হয় এবং Apache Commons CLI লাইব্রেরির মাধ্যমে সেগুলিকে ব্যবহার করতে হয়।


1. Properties ফাইল তৈরি করা

প্রথমে একটি Properties ফাইল তৈরি করতে হবে যেখানে আপনি আপনার কমান্ড লাইন অপশনগুলি সংরক্ষণ করবেন। উদাহরণস্বরূপ, একটি config.properties ফাইল তৈরি করুন:

file=input.txt
verbose=true

এখানে:

  • file অপশনটি একটি ফাইল পাথ ধারণ করবে।
  • verbose অপশনটি একটি বুলিয়ান মান ধারণ করবে যা লগিং বা ডিবাগging সক্রিয় করবে।

2. Properties ফাইল থেকে Command Line Options লোড করা

এখন আমরা একটি Java ক্লাস তৈরি করব যা এই config.properties ফাইলটি লোড করবে এবং সেই অনুযায়ী Apache Commons CLI এর মাধ্যমে কমান্ড লাইন অপশন তৈরি করবে।

উদাহরণ: Properties ফাইল থেকে Command Line Options লোড করা

import org.apache.commons.cli.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class CommandLineFromPropertiesExample {
    public static void main(String[] args) {
        // Properties ফাইল লোড করা
        Properties properties = new Properties();
        try (FileInputStream fis = new FileInputStream("config.properties")) {
            properties.load(fis);
        } catch (IOException e) {
            System.out.println("Error loading properties file: " + e.getMessage());
            return;
        }

        // অপশন তৈরি করা
        Options options = new Options();

        // Properties ফাইল থেকে ফাইল পাথ এবং verbose আর্গুমেন্ট নেয়া
        String filePath = properties.getProperty("file");
        boolean verbose = Boolean.parseBoolean(properties.getProperty("verbose"));

        // ফাইল পাথের জন্য অপশন তৈরি
        options.addOption("f", "file", true, "File path");
        // verbose অপশন তৈরি
        options.addOption("v", "verbose", false, "Enable verbose output");

        // কমান্ড লাইন প্যারামিটার পার্স করার জন্য CommandLineParser ব্যবহার করা
        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();

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

            // --file অপশন চেক করা এবং Properties থেকে মান সেট করা
            if (cmd.hasOption("f")) {
                String inputFile = cmd.getOptionValue("f");
                System.out.println("File to process: " + inputFile);
            } else {
                System.out.println("File to process (from properties): " + filePath);
            }

            // --verbose অপশন চেক করা এবং Properties থেকে মান সেট করা
            if (cmd.hasOption("v") || verbose) {
                System.out.println("Verbose output enabled");
            }

        } catch (ParseException e) {
            // ভুল অপশন দিলে হেল্প বার্তা দেখানো
            System.out.println("Parsing failed. Reason: " + e.getMessage());
            formatter.printHelp("CommandLineFromPropertiesExample", options);
        }
    }
}

3. কোডের ব্যাখ্যা

  • Properties ফাইল লোড করা: প্রথমে আমরা config.properties ফাইলটি লোড করেছি এবং সেখান থেকে file এবং verbose অপশনের মান বের করেছি।
  • Apache Commons CLI অপশন তৈরি করা: Options অবজেক্টে -f (ফাইল পাথ) এবং -v (verbose) অপশন তৈরি করা হয়েছে।
  • কমান্ড লাইন আর্গুমেন্ট পার্সিং: CommandLineParser ব্যবহার করে কমান্ড লাইন আর্গুমেন্ট পার্স করা হচ্ছে এবং যদি আর্গুমেন্ট প্রদান না করা হয়, তবে Properties ফাইলের ডিফল্ট মান (যেমন ফাইল পাথ বা verbose) ব্যবহার করা হচ্ছে।
  • বুলিয়ান ভ্যালু: verbose অপশনটি বুলিয়ান ধরনের (যেমন true অথবা false) এবং আমরা Boolean.parseBoolean() মেথড ব্যবহার করে এর মান গ্রহণ করছি।

4. কমান্ড লাইন রান করার উদাহরণ

Properties ফাইলের মাধ্যমে:

আপনি যদি Properties ফাইলের ডিফল্ট মান ব্যবহার করতে চান এবং কমান্ড লাইনে কিছু ইনপুট না দেন, তবে এই কমান্ড চালাতে হবে:

java CommandLineFromPropertiesExample

এটি আউটপুট করবে:

File to process (from properties): input.txt
Verbose output enabled

কমান্ড লাইনের আর্গুমেন্ট দিয়ে:

আপনি যদি কমান্ড লাইনে আর্গুমেন্ট দেন, যেমন:

java CommandLineFromPropertiesExample -f myfile.txt -v

এটি আউটপুট করবে:

File to process: myfile.txt
Verbose output enabled

সারাংশ

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

Content added By
Promotion

Are you sure to start over?

Loading...