使用 CLI 处理命令行
发表时间:2024-01-07 来源:明辉站整理相关软件相关文章人气:
[摘要]编写处理命令行参数的代码并不是一件很令人兴奋的事,但是有时候依然有必要这样做。在下次需要分析命令行参数并且事情有点复杂的时候,可不要忘了可信赖的开放源代码 Java 工具箱,并使用命令行接口(CLI,Command Line Interface)。 Jakarta Commons 负责 CLI...
编写处理命令行参数的代码并不是一件很令人兴奋的事,但是有时候依然有必要这样做。在下次需要分析命令行参数并且事情有点复杂的时候,可不要忘了可信赖的开放源代码 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();
}
}
}