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相关推荐

  1. 航空订票系统界面java_Java命令行界面(第21部分):航空公司2

    航空订票系统界面java 本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库. Airline 2的GitHub项目页面描述了该库," Airline是一个J ...

  2. 面码份量Java_JAVA语言(28道练习题)

    [练习题]01.类的成员变量 猜数字游戏一个类A有一个成员变量v有一个初值100.定义一个类对A类的成员变量v进行猜.如果大了则提示大了小了则提示小了.等于则提示猜测成功.import java.ut ...

  3. Java命令行界面(第28部分):getopt4j

    getopt4j的页面将其描述为"一个根据GNU样式解析命令行参数的库." 然后, 页面介绍getopt4j :"'getopt4j'库旨在以与glibc (GNU C运 ...

  4. 技术流 | 手把手教你用Python设计一个命令行界面

    作者 | Yannick Wolff 译者 | 刘旭坤 整理 | Jane 出品 | Python大本营 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰. ...

  5. C语言linux getopt_long()函数(命令行解析)(getopt、getopt_long_only)(短选项 -,长选项 --)(option结构体)(optind、optarg变量)

    参考文章:浅谈linux的命令行解析参数之getopt_long函数 文章目录 前言 一.关于命令行参数 二.getopt_long函数 参数以及返回值介绍(以上三个函数都适用): 1.argc和ar ...

  6. 28 | 案例篇:一个SQL查询要15秒,这是怎么回事?

    上一节,我们分析了一个单词热度应用响应过慢的案例.当用 top.iostat 分析了系统的 CPU 和磁盘 I/O 使用情况后,我们发现系统出现了磁盘的 I/O 瓶颈,而且正是案例应用导致的. 接着, ...

  7. [转载][总结]函数getopt(),getopt_long及其参数optind

    看webbench源码的时候碰到命令行解析工具getopt的使用,虽然之前也看过一点,但都不是很全面,只是了解个大概,下面稍微总结一下: getopt和optind: getopt被用来解析命令行选项 ...

  8. java登录界面命令_Java命令行界面(第30部分):观察

    java登录界面命令 这个有关Java命令行参数解析的系列文章由四个月来发表的29篇帖子组成,涵盖了28个不同的开放源代码库,可用于解析Java命令行参数. 这篇文章收集了可以从本系列的前29篇文章中 ...

  9. cli命令行界面 demo_Java命令行界面(第24部分):MarkUtils-CLI

    cli命令行界面 demo 本系列的第一篇 有关使用Java解析命令行参数的文章介绍了Apache Commons CLI库. 这是本系列中介绍的基于Java的命令行解析库中最古老的,而且可能是最常用 ...

最新文章

  1. 批量增加文件夹C语言实现
  2. 移动平台还有哪些创业机会
  3. 数学之美:欣赏超越数e
  4. 深度学习 --- 卷积神经网络CNN(LeNet-5网络详解)
  5. 精通MVC3摘译(5)-使用URL模式最佳实践
  6. c++ List、Vector、Stack、Queue使用
  7. Visio 2019
  8. matlab多行注释
  9. Linux命令之解压缩:tar、zip、rar 命令
  10. 狂神说——CSS3最新教程快速入门通俗易懂
  11. Build Metal-based Core Image kernels with Xcode
  12. 机器学习在饿了么竞价广告中的实践
  13. 2019届互联网校招薪资盘点!
  14. Revit内建模型的基础教学分享
  15. 显色指数(CRI)计算软件分享
  16. 搭建 ownCloud 私有云教程
  17. 【时间序列分析】12.MA(q)模型
  18. window.open()跳转新页面访问不了,但是单独访问这些地址则正常
  19. 修改uxtheme.exe ,打造自己的主题
  20. java 12306验证码识别_GitHub - sunqipeng-cn/JavaVerify: 用java 编写的验证码识别

热门文章

  1. 【无码专区4】幸运数字4(折半搜索+计数+结论)
  2. 【CF813F】Bipartite Checking(线段树分治+可删除并查集)
  3. P8215-[THUPC2022 初赛]分组作业【网络流】
  4. 玉米田(加加强版)【插头dp】
  5. jzoj3338-[NOI2013模拟]法法塔的奖励【权值线段树,线段树合并】
  6. POJ2373-Dividing the Path【单调队列优化dp】
  7. codeforces773 D. Perishable Roads(思维+最短路)
  8. 动态规划训练22 [Milking Time POJ - 3616 ]
  9. JavaFX UI控件教程(十八)之Progress Bar和Progress Indicator
  10. SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载