John Lloyd的argparser是本系列的第二十二篇有关基于Java的命令行参数解析的文章中介绍的库。 该库的主页除了提供单个源代码示例外,还提供了指向基于Javadoc的API文档 ,JAR文件,ZIP文件和TAR文件的链接。 本帖子中使用的示例与本系列的前二十一个帖子中使用的示例相似,并处理文件路径/名称和详细选项。 完整的代码清单可在GitHub上找到 。

“定义”阶段是在argparser中完成的,其中“ Holder”类的实例表示传递给ArgParser实例的addOption(String,Object)方法的预期选项。 下一个代码清单对此进行了演示。

argparser的“定义”阶段

final StringHolder file = new StringHolder();
final BooleanHolder verbose = new BooleanHolder();final ArgParser parser = new ArgParser("java examples.dustin.commandline.argparser.Main");
parser.addOption ("-f,--file %s #Path and name of file", file);
parser.addOption ("-v,--verbose %v #Verbosity enabled?", verbose);

本系列中的许多有关从Java解析命令行参数的库都具有使用单个参数,单个方法或单个注释元素明确说明的选项特征。 如代码清单所示,argparser会将选项的属性拼写在argparser解析的“规范”字符串中。

“解析”阶段是在argparser中完成的,方法是将带有命令行参数的String[]传递给ArgParser类的matchAllArgs(String [])方法。 下一条代码清单中显示了该单个语句。

用argparser进行“解析”阶段

parser.matchAllArgs(arguments);

“查询”阶段是在argparser中通过访问相应“持有人”类中称为“ 值 ”的public字段来完成的。 这显示在下一个代码清单中。

argparser的“审讯”阶段

out.println("File path/name is: " + file.value);
out.println("Verbosity is: " + verbose.value);

argparser库还支持“帮助” /“使用”消息。 在下面的代码清单中对此进行了演示,如果未指定“文件”选项(如果其“值”为null ),则在其中编写用法。

argparser的“用法”

if (file.value == null)
{out.println("ERROR: File path/name was not specified! Use -f or --file to specify file path/name.\n"+ parser.getHelpMessage());
}

接下来显示的屏幕快照演示了本文中涉及的示例。 第一张图片显示了未指定所需的“文件”选项时argparser提供的“用法”。 第二个图像显示了长和短选项名称的使用。

选择框架或库来帮助Java进行命令行解析时,需要考虑argparser的特征。

  • Arparser是开源的。 目前尚不清楚我是否根据任何特定的许可证进行了许可,但是JAR中包含一个COPYRIGHT文件,内容为“ Copyright John E. Lloyd,2004。保留所有权利。 授予使用,复制,修改和再分发的许可,但前提是保留此版权声明,并在适当的时候给予作者以荣誉。” 关于按“原样”分发软件的标准免责声明。
  • argparser.jar的大小约为129 KB,但包含.java源代码文件, .class编译文件和Javadoc HTML文件。
  • argparser.ArgParser类的Javadoc非常出色,并且是我希望在Javadoc中定期看到基于Java的“主要”类的示例。 这是一个小型开源项目如何一次记录项目/库的很好的例子,因为还使用了类的Javadoc并从项目的主页链接到该Javadoc。 该类级别的Javadoc甚至包括SimpleExample源代码(也位于分布式JAR文件中),以提供有关如何使用类和库的示例。
  • 由于argparser是使用“ 主要版本:46 ”编译的,因此它应使用与JDK 1.2相同的Java版本运行!

argparser库很小,易于使用。 它可能最适合希望使用小型库完成基本命令行处理的用户,尤其适合那些仍然可能在旧版本的JDK中运行其基于Java的命令行处理代码的用户。 使该库与本系列中的许多其他库不同的几件事是其出色的基于Javadoc的API文档以及其针对选项特征的字符串规范方法。

其他参考

  • argparser项目页面
  • argparser API文档 (Javadoc)
  • argparser.jar下载

翻译自: https://www.javacodegeeks.com/2017/10/java-command-line-interfaces-part-22-argparser.html

Java命令行界面(第22部分):argparser相关推荐

  1. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

  2. Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持

    Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:(          ) A Java反射主要涉及的类如C ...

  3. Java学习笔记22:并发(2)

    Java学习笔记22:并发(2) 图源:PHP中文网 终止任务 终止线程有一种非常简单的方式:设置一个多线程共享的标记位,子线程用轮询的方式检查这个标记位,如果该标记位显示取消状态,就让子线程退出执行 ...

  4. 华恩JAVA班第22天

    华恩JAVA班第22天 package com.zjj; public abstract class Shape {  private String name;    public Shape(Str ...

  5. Java的知识点22——时间处理相关类、Date时间类(java.util.Date)、DateFormat类和SimpleDateFormat类、Calendar日历类

    时间处理相关类 用long类型的变量来表示时间,获得现在时刻的"时刻数值":long now = System.currentTimeMillis(); Date时间类(java. ...

  6. 迁移学习 简而言之_简而言之Java.io:22个案例研究

    迁移学习 简而言之 这篇文章试图涵盖java.io中的一整套操作. 与与此主题相关的其他书籍和博客相比,我的动机是通过案例研究来展示"操作方法". 曾经是Java的学生,我意识到学 ...

  7. Java命令行界面(第30部分):观察

    这个有关Java命令行参数解析的系列文章由四个月来发表的29篇文章组成,涵盖了28个不同的开放源代码库,可用于解析Java命令行参数. 这篇文章收集了可以从本系列的前29篇文章中得出的一些观点,并提供 ...

  8. Java命令行界面(第10部分):picocli

    picocli主页面将picocli描述为"强大的微小命令行界面"," picocli"是一个文件Java框架,用于解析命令行参数并生成精美,易于定制的用法帮助 ...

  9. Java命令行界面(第23部分):Rop

    Rop库在其主页上被描述为"用Java编写的轻量级命令行选项解析器". Rop的"简介"还指出:" Rop的设计目的是最小化同时方便,并涵盖了大多数常 ...

最新文章

  1. VMware View把iPad从娱乐工具变成强大办公平台
  2. Java 8 Friday Goodies:轻松派本地缓存
  3. c++ signal 信号退出
  4. 一名小小的SQL Server DBA想谈一下SQL Server的能力
  5. 《HTML5移动Web开发实战》—— 1.6 在移动网站中使用HTML5
  6. [Visual Studio] VS2012调试时很慢的解决方案
  7. Spring Boot 接入支付宝完整流程实战
  8. Word文档如何压缩
  9. Indy相关函数用法
  10. 7z删除_7Zip免费的文件压缩/解压软件,包括独有的7z文件
  11. 阿里云 杭州 ARM 云服务器性能评测
  12. 软件测试环境的搭建及详解
  13. StarRocks 企业行|走进 58 同城,探索极速统一 3.0 时代的企业实践
  14. 无情未必真豪杰,怜子如何不丈夫——愿天下有情人终成眷属
  15. 联想ThinkSystem服务器 安装ESXI 7.0 踩坑记录
  16. 基于ROS节点多机协同(无人机/无人车)分析
  17. h5 Canvas时钟制作
  18. 百度地图API-实现底图切换
  19. 为什么90后不鸟管理者,却愿意被大神虐?
  20. android 拍摄视频后返回九宫格,抖音九宫格不同视频怎么拍 九个不同的视频在一个画面播放...

热门文章

  1. SpringCloud Eureka自我保护机制
  2. 03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询
  3. mysql添加新用户
  4. git创建tag标签
  5. 《认知红利》读书笔记
  6. Ajax传递json数据
  7. isnull PK <=>
  8. git 拉取gitlab代码
  9. matlab eval 不显示,matlab中 eval(command); 运算符无效的问题
  10. 机器人点焊枪接线_用于焊接机器人焊枪工具点及工件坐标系标定装置及方法与流程...