1. 苏葳的备忘录首页
  2. 开发工具

Java的命令行参数库 Commons CLI的使用

apache java commons cliApache Commons CLI 库提供了一组处理传往程序的选项的API。它也能打印出一个命令行工具的选项细节信息。由于历史遗留的问题,目前有开发并不向后兼容的Commons CLI 2的计划,但截止目前尚未发布。与其它命令行参数库比较起来,其使用方法相对规范。Commons CLI 支持不同类型的选项:

POSIX 风格选项 (例如: tar -zxvf foo.tar.gz)
GNU 风格选项 (例如: du --human-readable --max-depth=1)
Java 风格属性 (例如: java -Djava.awt.headless=true -Djava.net.useSystemProxies=true Foo)
跟着参数值的短选项(例如: gcc -O2 foo.c)
包含连字符的长选项 (例如: ant -projecthelp)

一个使用的例子:

 

Options options = new Options();
  options.addOption("i", "inter", true, "设定处理时间间隔(秒数)。");
  options.addOption("l", "lines", true, "设定每次处理行数。");
  options.addOption("h", "help", false, "显示帮助信息。");
//直接增加方式,参数1为短选项,2为长选项,3为是否选项后有参数,如-i 2之类。4为注释,在HelpFormatter打印中有用。
  CommandLineParser parser = new PosixParser(); //定义一个Posix风格处理器,当然还有其它风格的比如GNU
  HelpFormatter formatter = new HelpFormatter();
  try {
   // parse the command line arguments
   CommandLine line = parser.parse(options, args);
   if (line.hasOption("help")) { //若输入有--help参数(或-h),则用HelpFormatter打印使用注释后退出。
    formatter.printHelp("smssent", options);
    System.exit(0);
   }
   if (line.hasOption("inter")) {
    // initialise the member variable
    String interStr = line.getOptionValue("inter");//读取的参数为字符串
    if (isNumeric(interStr)) {
     Inter = Integer.parseInt(interStr) * 1000;
     if ((Inter < 10 * 1000) || (Inter > 60 * 1000)) {
      System.err.println("Inter取值必须在10至60之间");
      System.exit(1);
     }
     logger.info("参数inter=" + interStr);
    } else {
     System.err.println("Inter参数必须为数值。");
     System.exit(1);
    }
   } else
    logger.info("默认参数inter=" + String.valueOf(Inter));

此库功能较多,应该能满足目前所有需要。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/322.html

发表评论

邮箱地址不会被公开。 必填项已用*标注