編寫處理命令行參數的代碼并不是一件很令人興奮的事,但是有時候依然有必要這樣做。在下次需要分析命令行參數并且事情有點復雜的時候,可不要忘了可信賴的開放源代碼 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(); } } }
|