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 ফাইল থেকে কমান্ড লাইন অপশনগুলো লোড এবং প্রক্রিয়া করতে পারেন। এতে, আপনি বাহ্যিক কনফিগারেশন ফাইল থেকে ডাটা গ্রহণ করতে পারেন এবং সেই অনুযায়ী কমান্ড লাইন আর্গুমেন্ট প্রোগ্রামে প্রক্রিয়া করতে পারেন। এই পদ্ধতিটি খুবই কার্যকরী যখন আপনি অ্যাপ্লিকেশনের কনফিগারেশন সহজে পরিবর্তনযোগ্য রাখতে চান এবং একই সময়ে কমান্ড লাইন আর্গুমেন্টগুলোও হ্যান্ডল করতে চান।
Read more