import gnu.getopt.Getopt;
import gnu.getopt.LongOpt;
public class CommandLineParser {
public static void main(String[] args) {
LongOpt[] longOpts = new LongOpt[]{
new LongOpt("input", LongOpt.REQUIRED_ARGUMENT, null, 'i'),
new LongOpt("output", LongOpt.REQUIRED_ARGUMENT, null, 'o'),
new LongOpt("verbose", LongOpt.NO_ARGUMENT, null, 'v'),
new LongOpt("help", LongOpt.NO_ARGUMENT, null, 'h')
};
Getopt getopt = new Getopt("command", args, "i:o:vh", longOpts);
int opt = 0;
String input = null;
String output = null;
boolean verbose = false;
while ((opt = getopt.getopt()) != -1) {
switch (opt) {
case 'i':
input = getopt.getOptarg();
break;
case 'o':
output = getopt.getOptarg();
break;
case 'v':
verbose = true;
break;
case 'h':
printHelp();
System.exit(0);
default:
printHelp();
System.exit(1);
}
}
System.out.println("Input: " + input);
System.out.println("Output: " + output);
System.out.println("Verbose: " + verbose);
}
private static void printHelp() {
System.out.println("Usage: command -i <input> -o <output> [-v] [-h]");
System.out.println("-i, --input <input> Set input file path");
System.out.println("-o, --output <output> Set output file path");
System.out.println("-v, --verbose Enable verbose mode");
System.out.println("-h, --help Print help message");
}
}
shell
javac -cp .:path/to/getopt.jar CommandLineParser.java
java -cp .:path/to/getopt.jar CommandLineParser -i input.txt -o output.txt -v