最近准备用Java写一个数据抽取的小玩样,不过距离我上一次用Java写程序已经过去了N(N>4)年了;没有读过<Java编程思想>,深深地觉得现在写出来的代码很不Java风格…..
因为需要在命令行中用到比较复杂的参数(argument),所以想到利用CLI库来解决这一块。
CLI库的Jar文件可以从Apache Commons下载到,目前比较成熟的是CLI 1.2版本。
要使用CLI,我们需要创建一个Options Class的实例对象:
Options Maclean=new Options();
通过该Options对象我们可以定义命令行程序可接受的参数(argument)。加入参数的一种方式是使用addOptions()方法:
JDUL.addOption("END" ,true, "select the Big or Little Endian");
为命令行程序定义可接受参数后,还需要命令行解析器CommandLineParser进一步解析输入的参数:
BasicParser parser = new BasicParser(); CommandLine cl = parser.parse(JDUL, args);
下面是一段完整的命令行参数解析示例代码:
package par; import org.apache.commons.cli.BasicParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.ParseException; public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { try { Options JDUL = new Options(); JDUL.addOption("h" ,false, "Print help for JDUL"); JDUL.addOption("END" ,true, "select the Big or Little Endian"); JDUL.addOption("SSM" ,true, "select MSSM or ASSM"); BasicParser parser = new BasicParser(); CommandLine cl = parser.parse(JDUL, args); if( cl.hasOption('h') ) { HelpFormatter f = new HelpFormatter(); f.printHelp("OptionsTip", JDUL); } else{ System.out.println(cl.getOptionValue("END")); System.out.println(cl.getOptionValue("SSM")); } } catch(ParseException e) { e.printStackTrace(); } } }
具体使用该命令行解析程序:
C:\Users\maclean>java -jar "C:\Users\maclean\Documents\NetBeansProjects\par\dist\par.jar" -h usage: OptionsTip -END <arg> select the Big or Little Endian -h Print help for JDUL -SSM <arg> select MSSM or ASSM C:\Users\maclean>java -jar "C:\Users\maclean\Documents\NetBeansProjects\par\dist\par.jar" -END BIG -SSM AUTO BIG AUTO
Leave a Reply