编写处理命令行参数的代码并不是一件很令人兴奋的事,但是有时候依然有必要这样做。在下次需要分析命令行参数并且事情有点复杂的时候,可不要忘了可信赖的开放源代码 Java 工具箱,并使用命令行接口(CLI,Command Line Interface)。 Jakarta Commons 负责 CLI 项目。虽然说如果只有一两个参数使用它就显得大材小用,但是如果你的应用程序从命令行接受很多设置参数的话,它就是很必要的。 要使用 CLI,你需要创建 Options 类的一个实例: Options opt = new Options(); 使用 Options 的这个实例可以定义应用程序接受的命令行参数。定义命令行参数的一个方法是使用 Options 类的addOption() 方法。对应用程序可接受的每个选项调用一次这个方法。 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,然后解析传递给 main 方法的 String 数组。 BasicParser parser = new BasicParser(); CommandLinecl = parser.parse(opt, args);
现在所有的参数都已被解析,你就可以分析由解析器返回的CommandLine实例来确定用户提供的参数和值了。 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")); } 从上面的代码可以看到,你可以使用HelpFormatter类自动地为程序生成用法信息。
下面是完整的代码: // 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(); CommandLinecl = 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(); } } }
|