getopt java_Java命令行界面(第28部分):getopt4j
getopt java
getopt4j的頁面將其描述為“一個根據GNU樣式解析命令行參數的庫。” 然后, 頁面介紹getopt4j :“'getopt4j'庫旨在以與glibc (GNU C運行時庫)中的C getopt()函數相同的方式解析命令行選項。 與原始產品相比,它試圖以一種更簡單,更以Java為中心的方式來做到這一點。” 這篇文章描述了如何使用getopt4j來解析命令行選項,方法與本系列前面27篇文章所介紹的庫一樣 。
的“定義”階段在getopt4j通過實例來實現CLOptionDescriptor作為下一代碼清單證實(完整的源代碼是可用在GitHub )。
getopt4j的“定義”階段
final CLOptionDescriptor fileDescriptor= new CLOptionDescriptor("file",CLOptionDescriptor.ARGUMENT_REQUIRED,'f',"Path and name of file."); final CLOptionDescriptor verboseDescriptor= new CLOptionDescriptor("verbose",CLOptionDescriptor.ARGUMENT_DISALLOWED,'v',"Is verbosity enabled?"); final CLOptionDescriptor[] optionsDefinitions= new CLOptionDescriptor[]{fileDescriptor, verboseDescriptor};如上面的代碼所示, CLOptionDescriptor的實例放置在一個數組中,以呈現給getopt4j解析器。
通過實例化CLArgsParser類在getopt4j中實現“解析”階段。 該類的構造函數在String[]數組和代表選項定義的CLOptionDescriptor實例數組中接受命令行參數。 這顯示在下一個代碼清單中。
使用getopt4j進行“解析”階段
final CLArgsParser parser = new CLArgsParser(arguments, optionsDefinitions);通過在CLArgsParser實例上調用方法getArguments()來檢索List<CLOption> ,可以完成getopt4j的“詢問”階段。 可以通過其getId()方法查詢CLOption每個實例,以按其“短”名稱(在此示例中為“ f”或“ v” getId()獲取解析的參數。 通過其getId()方法找到適當的CLOption實例后,該CLOption相同實例將通過調用CLOption的方法getArgument()方法來提供與該選項在命令行上關聯的值。 下一個代碼清單中演示了這種“詢問”過程。
getopt4j的“審訊”階段
String filePathAndName = null; boolean verbose = false; final List<CLOption> options = parser.getArguments(); for (final CLOption option : options) {switch(option.getId()){case 'f' :filePathAndName = option.getArgument();break;case 'v' :verbose = true;break;} }out.println("File path/name is '" + filePathAndName + "' and verbosity is " + verbose);通過將CLOptionDescriptor實例數組傳遞給靜態方法CLUtil.describeOptions(CLOptionDescriptor[]) ,getopt4j庫使請求使用/幫助信息的請求變得容易。 在下一個代碼清單中將證明這一點,當檢測到未提供文件路徑/名稱時,將調用幾行代碼。
getopt4j的“用法”語句
if (filePathAndName == null) {out.println("ERROR: The file path/name option is required but was not provided.\n\n"+ CLUtil.describeOptions(optionsDefinitions)); }接下來的兩個屏幕快照中的第一個描述了自動生成的“ usage”語句,當未指定所需的“ file”選項時,代碼可以調用該語句。 第二張圖片描繪了正在使用的“文件”和“詳細”長短名稱的各種組合。
選擇框架或庫來幫助Java進行命令行解析時,需要考慮getopt4j的特征。
- getopt4j是開源的,并根據Apache License 2.0版發布。
- getopt4j-1.2.jar JAR文件的大小約為16 KB。
- MVN存儲庫 (和Maven中央存儲庫 )上可用的getopt4j-1.2.jar (2016年6月)中的類是根據Java SE 6 (“ 主要版本:50 ”)編譯的。
- 該發行版的examples目錄中提供了有關如何使用getopt4j的最佳示例。
getopt4j庫提供Java風格的類似GNU C getopt()的功能和API 。
其他參考
- getopt4j (GitHub)
- getopt4j 1.2 ( Maven / MVN存儲庫)
- getopt4j示例
- GNU C getopt()的示例
翻譯自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-28-getopt4j.html
getopt java
總結
以上是生活随笔為你收集整理的getopt java_Java命令行界面(第28部分):getopt4j的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 七工匠拉丝特效滤镜发售:号称“秒变电影级
- 下一篇: 基于安卓 13,小米正为小米平板 5 系