Java命令行解析工具Apache CLI

出处:http://blog.csdn.net/conquer0715/article/details/42805947

 

Apache Commons CLI 是 Apache 下面的一个解析命令行输入的工具包,该工具包还提供了自动生成输出帮助文档的功能。

Apache Commons CLI 支持多种输入参数格式,主要支持的格式有以下几种:

  1. POSIX(Portable Operating System Interface of Unix)中的参数形式,例如 tar -zxvf foo.tar.gz
  2. GNU 中的长参数形式,例如 du --human-readable --max-depth=1
  3. Java 命令中的参数形式,例如 java -Djava.net.useSystemProxies=true Foo
  4. 短杠参数带参数值的参数形式,例如 gcc -O2 foo.c
  5. 长杠参数不带参数值的形式,例如 ant – projecthelp

随着科学计算可视化及多媒体技术的飞速发展,人机交互技术不断更新,但是最传统的命令行模式依然被广泛的应用于多个领域,因为命令行界面要较图形用户界面节约更多的计算机系统资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。同时,命令行模式也更加有利于客户进行二次开发,方便应用程序的整合。Apache Commons CLI 提供了很多实用的工具和类实现,进一步方便了我们对命令行工具的开发。

 

[java]  view plain copy 在CODE上查看代码片
 
  1. import org.apache.commons.cli.*;  
  2.   
  3. public class Test {  
  4.   
  5.     public static void main(String[] args) throws ParseException {  
  6.         // for test  
  7.         String[] Args0 = {"-h"};  
  8.         String[] Args1 = {"-i""192.168.1.1""-p""8443""-t""https"};  
  9.   
  10.         Option help = new Option("h""the command help");  
  11.         Option user = OptionBuilder.withArgName("type").hasArg().withDescription("target the search type").create("t");  
  12.   
  13.         // 此处定义参数类似于 java 命令中的 -D<name>=<value>  
  14.         Option property = OptionBuilder.withArgName("property=value").hasArgs(2).withValueSeparator().withDescription  
  15.                 ("search the objects which have the target property and value").create("D");  
  16.         Options opts = new Options();  
  17.         opts.addOption(help);  
  18.         opts.addOption(user);  
  19.         opts.addOption(property);  
  20.   
  21.         // do test  
  22. //        simpleTest(args);  
  23.         simpleTest(Args1);  
  24.     }  
  25.   
  26.     /////////  
  27.   
  28.     public static void simpleTest(String[] args) {  
  29.         Options opts = new Options();  
  30.         opts.addOption("h"false"HELP_DESCRIPTION");  
  31.         opts.addOption("i"true"HELP_IPADDRESS");  
  32.         opts.addOption("p"true"HELP_PORT");  
  33.         opts.addOption("t"true"HELP_PROTOCOL");  
  34.         CommandLineParser parser = new BasicParser();  
  35. //        CommandLineParser parser = new GnuParser ();  
  36. //        CommandLineParser parser = new PosixParser();  
  37.         CommandLine cl;  
  38.         try {  
  39.             cl = parser.parse(opts, args);  
  40.             if (cl.getOptions().length > 0) {  
  41.                 if (cl.hasOption('h')) {  
  42.                     HelpFormatter hf = new HelpFormatter();  
  43.                     hf.printHelp("May Options", opts);  
  44.                 } else {  
  45.                     String ip = cl.getOptionValue("i");  
  46.                     String port = cl.getOptionValue("p");  
  47.                     String protocol = cl.getOptionValue("t");  
  48.                     System.out.println(ip);  
  49.                     System.out.println(port);  
  50.                     System.out.println(protocol);  
  51.                 }  
  52.             } else {  
  53.                 System.err.println("ERROR_NOARGS");  
  54.             }  
  55.         } catch (ParseException e) {  
  56.             e.printStackTrace();  
  57.         }  
  58.     }  
  59. }  

 

 

你可能感兴趣的:(cli)