日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

getopt java_Java命令行界面(第28部分):getopt4j

發(fā)布時(shí)間:2023/12/3 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 getopt java_Java命令行界面(第28部分):getopt4j 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

getopt java

getopt4j的頁面將其描述為“一個(gè)根據(jù)GNU樣式解析命令行參數(shù)的庫。” 然后, 頁面介紹getopt4j :“'getopt4j'庫旨在以與glibc (GNU C運(yùn)行時(shí)庫)中的C getopt()函數(shù)相同的方式解析命令行選項(xiàng)。 與原始產(chǎn)品相比,它試圖以一種更簡單,更以Java為中心的方式來做到這一點(diǎn)。” 這篇文章描述了如何使用getopt4j來解析命令行選項(xiàng),方法與本系列前面27篇文章所介紹的庫一樣 。

的“定義”階段在getopt4j通過實(shí)例來實(shí)現(xiàn)CLOptionDescriptor作為下一代碼清單證實(shí)(完整的源代碼是可用在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的實(shí)例放置在一個(gè)數(shù)組中,以呈現(xiàn)給getopt4j解析器。

通過實(shí)例化CLArgsParser類在getopt4j中實(shí)現(xiàn)“解析”階段。 該類的構(gòu)造函數(shù)在String[]數(shù)組和代表選項(xiàng)定義的CLOptionDescriptor實(shí)例數(shù)組中接受命令行參數(shù)。 這顯示在下一個(gè)代碼清單中。

使用getopt4j進(jìn)行“解析”階段

final CLArgsParser parser = new CLArgsParser(arguments, optionsDefinitions);

通過在CLArgsParser實(shí)例上調(diào)用方法getArguments()來檢索List<CLOption> ,可以完成getopt4j的“詢問”階段。 可以通過其getId()方法查詢CLOption每個(gè)實(shí)例,以按其“短”名稱(在此示例中為“ f”或“ v” getId()獲取解析的參數(shù)。 通過其getId()方法找到適當(dāng)?shù)腃LOption實(shí)例后,該CLOption相同實(shí)例將通過調(diào)用CLOption的方法getArgument()方法來提供與該選項(xiàng)在命令行上關(guān)聯(lián)的值。 下一個(gè)代碼清單中演示了這種“詢問”過程。

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實(shí)例數(shù)組傳遞給靜態(tài)方法CLUtil.describeOptions(CLOptionDescriptor[]) ,getopt4j庫使請求使用/幫助信息的請求變得容易。 在下一個(gè)代碼清單中將證明這一點(diǎn),當(dāng)檢測到未提供文件路徑/名稱時(shí),將調(diào)用幾行代碼。

getopt4j的“用法”語句

if (filePathAndName == null) {out.println("ERROR: The file path/name option is required but was not provided.\n\n"+ CLUtil.describeOptions(optionsDefinitions)); }

接下來的兩個(gè)屏幕快照中的第一個(gè)描述了自動生成的“ usage”語句,當(dāng)未指定所需的“ file”選項(xiàng)時(shí),代碼可以調(diào)用該語句。 第二張圖片描繪了正在使用的“文件”和“詳細(xì)”長短名稱的各種組合。

選擇框架或庫來幫助Java進(jìn)行命令行解析時(shí),需要考慮getopt4j的特征。

  • getopt4j是開源的,并根據(jù)Apache License 2.0版發(fā)布。
  • getopt4j-1.2.jar JAR文件的大小約為16 KB。
  • MVN存儲庫 (和Maven中央存儲庫 )上可用的getopt4j-1.2.jar (2016年6月)中的類是根據(jù)Java SE 6 (“ 主要版本:50 ”)編譯的。
  • 該發(fā)行版的examples目錄中提供了有關(guān)如何使用getopt4j的最佳示例。

getopt4j庫提供Java風(fēng)格的類似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

總結(jié)

以上是生活随笔為你收集整理的getopt java_Java命令行界面(第28部分):getopt4j的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。