注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

Apache Commons CLI 简单使用  

2012-01-01 19:43:47|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Commons CLI 简单使用
首先使用 Options 类实例一个存储Option的实例
三种方法创建Option:
1.Options 实例的 addOption方法
 OptionsaddOption(String opt, boolean hasArg, String description) 
          Add an option that only contains a short-name.
 OptionsaddOption(String opt, String longOpt, boolean hasArg, String description) 
          Add an option that contains a short-name and a long-name.

2.使用Option类的构造方法
Option(String opt, boolean hasArg, String description) 
          Creates an Option using the specified parameters.
Option(String opt, String description) 
          Creates an Option using the specified parameters.
Option(String opt, String longOpt, boolean hasArg, String description) 

3.使用OptionBuilder方法

再是使用Parser 三种Parser的实现 BasicParser,GnuParser,PosixParser

Class Parser

java.lang.Object   extended by org.apache.commons.cli.Parser 
All Implemented Interfaces:
CommandLineParser
Direct Known Subclasses:
BasicParserGnuParserPosixParser

CommandLineparse(Options options, String[] arguments) 
          Parses the specified arguments based on the specifed Options.


4.使用CommandLine对象可以得到参数值,根据不同选项,做出自己的处理

 StringgetOptionValue(char opt) 
          Retrieve the argument, if any, of this option.
 StringgetOptionValue(char opt, String defaultValue) 
          Retrieve the argument, if any, of an option.
 StringgetOptionValue(String opt) 
          Retrieve the argument, if any, of this option.
 StringgetOptionValue(String opt, String defaultValue) 
          Retrieve the argument, if any, of an option.
 String[]getOptionValues(char opt) 
          Retrieves the array of values, if any, of an option.

举个例子

package com.hjzheng.postgres;

import java.util.Arrays;
import java.util.Locale;
import java.util.ResourceBundle;

import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;

public class PostgreSQLCommand {

public static void main(String[] args) {
parser(args);
}

public static void parser(String[] args) {
ResourceBundle resourceBundle = ResourceBundle.getBundle("message",
Locale.getDefault());

Options opts = new Options();
opts.addOption("h", "help", false,
resourceBundle.getString("HELP_DESCRIPTION"));
opts.addOption("i", "ip", true,
resourceBundle.getString("HELP_IPADDRESS"));

Option portOption = OptionBuilder.withArgName("arg")
.withLongOpt("port").hasArg()
.withDescription(resourceBundle.getString("HELP_PORT"))
.create("p");

opts.addOption(portOption);

Option filesOption = OptionBuilder.withArgName("args")
.withLongOpt("files").hasArgs()
.withDescription(resourceBundle.getString("HELP_FILES"))
.create("f");

opts.addOption(filesOption);

BasicParser parser = new BasicParser();
CommandLine cl;
try {
cl = parser.parse(opts, args);
if (cl.getOptions().length > 0) {
if (cl.hasOption('h')) {
HelpFormatter hf = new HelpFormatter();
hf.printHelp("Options", opts);
} else {
String ip = cl.getOptionValue("i");
String port = cl.getOptionValue("p");
String[] files = cl.getOptionValues("f");

System.out.println("you input ip:" + ip);
System.out.println("you input port:" + port);
System.out.println("you input files:" + Arrays.asList(files));
}
} else {
System.err.println(resourceBundle.getString("ERROR_NOARGS"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


文件结构:D:\ postgresCMD ---- PostgresCmd.jar
                                          |
                                           ------ lib ----- commons-cli-1.2.jar
修改MANIFEST.MF 加入以下信息
Manifest-Version: 1.0
Main-Class: com.hjzheng.postgres.PostgreSQLCommand
Class-Path: lib/commons-cli-1.2.jar

PS D:\postgresCMD> java -jar .\PostgresCmd.jar -h
usage: Options
-f,--files <args> This is -f
-h,--help This is -h
-i,--ip <arg> This is -i
-p,--port <arg> This is -p
PS D:\postgresCMD> java -jar .\PostgresCmd.jar -i 172.17.16.50 -p 5432 -f file1 file2
you input ip:172.17.16.50
you input port:5432
you input files:[file1, file2]
PS D:\postgresCMD>






参考资料
http://commons.apache.org/cli/introduction.html
  评论这张
 
阅读(5393)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017