Java命令行界面(第22部分):argparser

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何粗暴地下载huggingface_hub指定数据文件

参考这里: https://huggingface.co/docs/huggingface_hub/guides/download 可见下载单个文件,下载整个仓库文件都是可行的。 这是使用snapshot_download下载的一个例子: https://qq742971636.blog.csdn.net/article/details/135150482 sn…

顺序表输入栈元素c语言,C语言数据结构之栈简单操作

C语言数据结构之栈简单操作实验:编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈(2)插入元素(3)删除栈顶元素(4)取栈顶元素(5)遍历顺序栈(6)置空顺序栈分析:栈的顺序存储结构简称…

25q64存储多个数据_一篇文章看懂,存储虚拟化在不同用例中的实践与优势

存储虚拟化是一种对物理存储资源进行抽象的技术,使其看起来像是一个集中的资源。虚拟化掩盖了管理内存、网络、服务器和存储中资源的复杂性。存储虚拟化运行在多个存储设备上,使它们看起来就像一个单一的存储池。这些池化的存储设备可以来自不同的供应商…

android代码画出波浪球,Android绘制波浪曲线,效果很赞的。

github地址:https://github.com/sddyljsx/Android-SurfView-WaveViewpackage neal.canvas;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import and…

Java命令行界面(第14部分):google-options

google-options的GitHub页面指出google-options是“来自Google(java)的人们的命令行参数解析库。” 该页面继续说:“这是Bazel Project中的命令行参数解析器。 com.google.devtools.common.options程序包已拆分为一个单独的jar,用…

android 输入法文本选择功能,Android的文本和输入---创建输入法(一)

输入法编辑器(IME)是让用户输入文本的控件。Android提供了一个可扩展的的输入法的框架,它允许应用程序给用户提供另外的输入法,如软键盘或语音输入。这些输入法一旦安装,用户就可以从系统的设置中选择他们想要使用的IME,并且这个设…

华为mate40RS能升级鸿蒙,mate40Pro和40RS能用上鸿蒙系统吗

[分享交流]mate40Pro和40RS能用上鸿蒙系统吗8886电梯直达huafen210861086新学乍练发表于 2020-12-18 12:30:08来自:HUAWEI Mate 40 Pro最新回复 2020-12-19 09:50:21如题好多人都说不能用上鸿蒙系统林泽徐独步江湖发表于 2020-12-18 12:30:52来自:HUAWEI…

android记事本添加图片功能,安卓手机上有什么便签app既可以写日记又可以添加照片?...

原标题:安卓手机上有什么便签app既可以写日记又可以添加照片?当前,有很多人一直保持着写日记的习惯,因为这样可以及时记录自己的成长轨迹,使得自己可以追寻到时光的记忆,但是我们记录日记的工具&#xff0c…

Java命令行界面(第20部分):JSAP

JSAP ( Java Simple Argument Parser )2.1是本系列文章的第二十篇,重点是处理Java的命令行参数。 JSAP页面描述了该库存在的原因:“我在Internet上找到了几个解析器,所有解析器都处理了开关,但是在解析返回…

小米平板4android软件兼容吗,小米平板4有NFC功能吗 小米平板4支持NFC吗

小米平板4有NFC吗?小米平板4终于在诸多期待之下发布了,总的来说,小米平板4是一款性价比非常高的产品。所以没有带来太多惊喜的地方,但整体表现还是不错的。可以说是目前最便宜的骁龙660智能产品,性能中端。加上小米MIU…

监视器java_Java监视器绑定的超人

监视器java这是超人生活中的黑暗时期。 乔尔艾尔(Jor-El)希望他继续航行,为他的最终命运做好准备。 然而,地球面临着世界末日,正义联盟需要他们的钢铁侠行动来拯救世界。 但是,由于我们只有一个超人&#x…

Java命令行界面(第25部分):JCommando

JCommando 网站 上将JCommando描述为“命令行参数的Java参数解析器”。 JCommando读取XML配置以生成一个Java类,该类处理Java应用程序中的解析。 在提供XML配置的 Java命令行解析库的本系列文章中,以前涵盖的唯一基于Java的库是JSAP ,但这是该…

鸿蒙系统6月可升级,华为鸿蒙2.0系统大规模升级从6月开始?

你现在使用的智能手机是什么,苹果的iPhone手机,华为智能手机,小米手机还是其他智能手机。从操作系统来看目前的智能手机基本上可以分成iPhone手机跟安卓智能手机,其中iPhone手机使用的是iOS系统,而其他智能手机操作系统…

wso2 esb_WSO2 ESB的一种消息传递方式

wso2 esb正如我之前在WSO2 ESB工作时所发布的那样。 为了更好地理解此ESB,我一直在浏览示例 (尚未完成所有示例 )。 示例12是关于与ESB的单向消息传递,并使用TCP监视器使其可见。 我之前已经介绍过如何设置类似的工具“ TcpTunnel…

android 录像机,android 录像机

一直都做camera 录像功能其实知道的很少,以前也是迷迷糊糊知道怎么写个video,今天测试了一下,各种问题。问题来源首先是对于SDK的阅读不够仔细。 实践的比较少。 其实所谓的录像 就是两个类的结合 一个是Camera 一个是MediaRecorder 这两个类…

Java命令行界面(第21部分):航空公司2

本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库。 Airline 2的GitHub项目页面描述了该库,“ Airline是一个Java库,提供了基于注释的框架来解析命令行界面。” 该页面进入状态:航空公司“既支持简单的单个命令&#xf…

android中进度条的使用,android的进度条使用

android的进度条1、实现的效果2、布局代码先写一个my_browser.xml文件 存放WebViewandroid:layout_width"fill_parent"android:layout_height"fill_parent"android:orientation"vertical" >android:id"id/webView"android:layout_w…

应用服务器web服务器_最受欢迎的应用服务器

应用服务器web服务器这是本系列的第二篇文章,我们将发布有关Java安装的统计数据。 使用的数据集来自免费的Plumbr安装,在过去六个月中,我们总共收集了1,024个不同的环境。 该系列的第一篇文章分析了基础-运行JVM的操作系统,是32位…

如何在Java 8中将Lambda表达式转换为方法引用?

如果您使用Java 8进行编码,那么您会知道使用方法引用代替lambda表达式会使您的代码更具可读性,因此建议尽可能使用方法引用替换lambda表达式,但是,最大的问题是,您如何查找是否可以用方法引用替换lambda? 是…

最大化窗口设置_打开表格总是默认窗口最小化?适用Word、PPT等其他应用

今天有小哥哥说每天早上上班打开第一个表格时,这样显示;打开第二个表时是这样显示;每次打开第二个表后点最大化再打开其他的表才正常显示为最大化的状态。其实,这只是表格的默认打开方式改变了,我们改正过来就好了。在…