最近准备用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);
下面是一段完整的命令行参数解析示例代码:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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();
         }
 
     }
}
具体使用该命令行解析程序:
?
1
2
3
C:\Users\maclean>java -jar  "C:\Users\maclean\Documents\NetBeansProjects\par\dist\par.jar"  -h
usage: OptionsTip
  -END <arg>