利用CLI处理命令行

ZDNet软件频道 时间:2003-12-08 作者:ZDNet China |  我要评论()
本文关键词:java javatips CLI
编写一些代码来分析命令行参数不是最令人兴奋的事情,但是在一些时候它依然是非常必要的。本文我们将为您展示如何用命令行接口(CLI)来帮助你完成这些工作。
本文译自Builder.com,未经许可请勿转载

编写一些代码来分析命令行参数不是最令人兴奋的事情,但是在一些时候它依然是非常必要的。不过,当你下次在检查命令行参数的时候,记得充分利用开放源代码的java工具包,使用命令行接口(CLI)来帮助你完成这些工作。

CLI是Jakarta Commons中的一个子类。如果你仅仅只有一到两个参数需要处理,那么使用它有点多余,但是,如果你需要从命令行中捕获大多数应用程序的设置参数,那么使用CLI是恰到好处的。

如果你想使用CLI,首先,需要创建一个如下的Options类:

Options opt = new Options();

通过利用这个Options,你可以使用addOption()方法定义你的应用程序可接受的命令行参数,每次都为一个option调用一次这个方法,看下面例示:

opt.addOption("h", false, "Print help for this application");
opt.addOption("u", true, "The username to use");
opt.addOption("dsn", true, "The data source to use");

一旦你定义了类的参数,创建一个CommandLineParser,并分析已传送到主方法中的

组。

     BasicParser parser = new BasicParser();
CommandLine cl = parser.parse(opt, args);

    等到所有的参数都被解析以后,你可以开始检查返回的命令行,这些命令行中,提供

用户的参数和值已被语法分析程序详细检查过了。

if ( cl.hasOption('h') ) {
       HelpFormatter f = new HelpFormatter();
      f.printHelp("OptionsTip", opt);
  }
   else {
    System.out.println(cl.getOptionValue("u"));
    System.out.println(cl.getOptionValue("dsn"));
}

就象你看到的那样,你可以使用HelpRormatter类为你的程序自动地产生使用信息。

下面是这个程序完整的代码:

// OptionsTip.java
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 OptionsTip {
    public static void main(String args[]) {
        try {
            Options opt = new Options();

            opt.addOption("h", false, "Print help for this application");
            opt.addOption("u", true, "The username to use");
            opt.addOption("dsn", true, "The data source to use");

            BasicParser parser = new BasicParser();
            CommandLine cl = parser.parse(opt, args);

            if ( cl.hasOption('h') ) {
                HelpFormatter f = new HelpFormatter();
                f.printHelp("OptionsTip", opt);
            }
            else {
                System.out.println(cl.getOptionValue("u"));
                System.out.println(cl.getOptionValue("dsn"));
            }
        }
        catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

   CLI可以把分析命令行参数的工作变得简单,让你从此不再为单调的解析工作烦恼。


本文作者: David PetersheimGenscape公司的应用开发主管。他设计并开发了服务方应用(server-side applications)以便可以获得和处理实时能量数据.




责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134