编写一些代码来分析命令行参数不是最令人兴奋的事情,但是在一些时候它依然是非常必要的。不过,当你下次在检查命令行参数的时候,记得充分利用开放源代码的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 Petersheim是Genscape公司的应用开发主管。他设计并开发了服务方应用(server-side applications)以便可以获得和处理实时能量数据.