java parse_Java命令行界面(第9部分):parse-cmd
java parse
parse-cmd库由单个类ParseCmd.java
组成,该类是“用于在Java应用程序中定义和解析命令行参数的Java类。” 该库托管在Google Code存档上 ,因此可以随时关闭 。 该JAR似乎也可以在GitHub上使用 。 这篇文章介绍了如何使用parse-cmd 0.0.93处理Java中的命令行参数。
parse-cmd Requirement Wiki列出了几种用于处理Java命令行参数的替代方法,包括本系列前面已介绍的替代方法。 在列出这些替代方案之后,它指出:“查看这些条目和其他条目,是时候尝试另一个解析器了。” 然后,文档继续描述parse-cmd试图满足的要求。
下一个(不完整的)代码清单演示了使用parse-cmd解析命令行参数的“定义”阶段。 [请注意,本文中的示例与本系列的前八篇文章中的示例相似。]
parse-cmd的“定义”阶段
/** String displayed where there is a problem processing arguments. */
private final static String USAGE ="java examples.dustin.commandline.parsecmd.Main --file <filePathAndName> [--verbose 1]";public static void main(final String[] arguments)
{final ParseCmd parseCmd= new ParseCmd.Builder().parm("--file", "").req().parm("--verbose", "0").help(USAGE).build();
代码清单演示了使用ParseCmd.Builder()和该类实例上可用的流利方法的预期命令行参数的定义。 每个方法依次返回同一Builder
类的实例,以便可以将这些方法调用链接在一起,如上所示。 如上所示,用法/帮助字符串是手动构建的,并通过help(String)方法提供给Builder
,而不是由parse-cmd自动构建。
ParseCmd.Builder
类的parm
方法已重载,但是在此代码清单中,我使用了parm(String, String)
方法parm(String, String)
该方法接受参数的名称和该参数的“默认”值。 如果我仅向该方法提供一个字符串,该方法仅接受一个字符串,那么该参数的默认值将假定为“ 1”。 对于文件路径和名称参数,这可能导致parse-cmd假定参数类型错误。 通过显式提供默认的空字符串,parse-cmd可以将文件路径和名称的参数准确地视为可变长度字符串。
上面的代码中也定义了--verbose
参数,并且还提供了默认值,因为如果没有提供参数,则隐式默认值“ 1”将使冗长性“ on”,并且不是默认值。使用Java进行命令行分析的系列文章中的任何较早的文章。
在Builder
一个链式返回实例上调用req()
表示需要先前定义的参数( --file
)。 另一个参数( --verbose
)没有指定此参数,因此隐式默认为可选。
据我所知,使用parse-cmd为定义的命令行参数指定别名或同义词并不容易。 换句话说,我看不到告诉parse-cmd --file
和-f
是相同的命令行参数的方法。 因此,在此示例中,我仅对参数--file
和--verbose
使用带双连字符的“ long”版本。
有了本系列中以前的基于Java的命令行解析库,“解析”阶段紧随“定义”阶段。 尽管可以使用parse-cmd进行相同的转换,但广告且首选的方法是在“定义”阶段之后和“解析”阶段之前实施“验证”阶段。 此阶段使您可以查看在验证可用命令行参数期间是否发现任何错误,并在下一个(不完整的)代码清单中进行演示。
parse-cmd的“验证”阶段
final String errorString = parseCmd.validate(arguments);
if (!errorString.isEmpty())
{out.println("ERROR: " + errorString);
}
刚刚显示的代码清单演示了ParseCmd.validate(String[])
方法的使用,该方法用于验证命令行参数是否与“定义”阶段中定义的预期参数匹配。 如果有任何意外结果,则返回非空字符串。 空的String被认为是一件好事,它表示“有效”命令行参数。
使用有效的参数,下一步可以“解析”那些命令行参数,如下面的单行代码清单所示。
使用parse-cmd进行“解析”阶段
final Map<String, String> parsedArguments = parseCmd.parse(arguments);
调用ParseCmd.parse(String[])
是参数名称到参数值的Java Map<String, String>
。
通过简单地访问解析阶段返回的Map<String, String>
即可实现parse-cmd的“询问”阶段。 可以通过参数名称查询地图的键,并且返回的值是与该参数名称关联的值。 请注意,这意味着所有参数,甚至是像--verbose
类的“布尔”参数,都具有与之关联的值,而不是唯一需要的标志是否存在。 换句话说,-- --verbose
在命令行上表示时必须后面跟一个值。 在下面的代码清单中演示了在这种情况下对两个预期参数的询问。
parse-cmd的“审讯”阶段
final Map<String, String> parsedArguments = parseCmd.parse(arguments);
final String filePathAndName = parsedArguments.get("--file");out.println("The path/name of the file is '" + filePathAndName+ "' and verbosity is set to '" + parsedArguments.get("--verbose") + "'.");
GitHub上提供了示例的完整代码清单,该示例的片段已在本文中显示。
下一个屏幕快照演示了未提供必需的命令行参数( --file
)时显示的消息。
下面的屏幕快照演示了如何成功应用基于parse-cmd的--file
和--verbose
命令行参数的命令行处理。
在选择框架或库来帮助Java进行命令行分析时,需要考虑parse-cmd的一些其他特征。
- parse-cmd是带有Apache License 2.0的开源。
- parse-cmd托管在Google代码档案库中 ,该档案库可随时被“拒绝”(当前状态为“将于2016年初被拒绝”)。
parsecmd-0.0.93.jar
JAR文件的大小约为50 KB。- parse-cmd采用流畅的Builder实现,而不使用注释。
parse-cmd是(当前)另一个Java库,可供需要处理命令行参数的Java开发人员使用。 它使用一些假设和含义来做出一些决策。 parse-cmd的作者写道,尽管“有几种基于Java的命令行解析解决方案可用”,但parse-cmd仍是编写的,因为“它们通常都很难学习和使用。”
其他参考
- 解析cmd
- parse-cmd来源
- parse-cmd下载
- parse-cmd – Requirement.wiki
- parse-cmd – sampleSource.wiki
翻译自: https://www.javacodegeeks.com/2017/07/java-command-line-interfaces-part-9-parse-cmd.html
java parse
java parse_Java命令行界面(第9部分):parse-cmd相关推荐
- JAVA环境变量配置与配置后CMD的使用
JAVA环境变量配置: 直接在环境变量Path(或PATH,大小写无所谓)里加上 :JDK安装路径名/bin 也可以先设JAVA_HOME然后再设JAVA_HOME/bin,但必须是在同一区域中进行设 ...
- java sdf.parse_用DateFormat的parse方法验证字符串是否是日期的问题
因为最近比较闲 有点不思进取 也没什么问题要写了 今天不错,发现一个,恩,感觉不错 做了一个上传Excel并解析数据然后入库的功能,里面涉及到是否是日期格式的判断 之前是这么写的(深谙这么写是不好的, ...
- java runtime shell_java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现...
Runtime.getRuntime().exec()执行JVM之外的程序:常见的几种陷阱 前言 日常java开发中,有时需要通过java运行其它应用功程序,比如shell命令等.jdk的Runtim ...
- Java时间处理类SimpleDateFormat的parse和format方法的正确使用
Java中怎么才能把日期转换成想要的格式呢,或把字符串转换成一定格式的日期,如把数据库中的日期或时间转换成自己想要的格式,JAVA中提供了SimpleDateFormat类可以实现. SimpleDa ...
- java rop_Java命令行界面(第23部分):Rop
java rop Rop库在其主页上被描述为"用Java编写的轻量级命令行选项解析器". Rop的"简介"还指出:" Rop的设计目的是最小化同时方便 ...
- java args_Java命令行界面(第2部分):args4j
java args 在上一篇文章中 ,我研究了使用Apache Commons CLI在Java应用程序中解析命令行参数. 在本文中,我将使用另一个库args4j进行相同的操作. args4j采用了一 ...
- Windows下Java调用BAT批处理不弹出cmd窗口
常规Windows下Java调用BAT方式肯定会弹出cmd窗口 Runtime.getRuntime().exec("cmd.exe /C start D:\\test.bat") ...
- Java基础:Java的记事本编写代码,使用cmd运行
目录 一.前提: 二.写代码: 三.运行:使用快捷键win+R进入运行或者鼠标右键点击屏幕左下角win图标单击"运行",输入cmd点击确定. 四.关于cmd基础命令: 五.按照四步 ...
- 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec
例如: //package FS; import java.io.IOException; import java.sql.*; public class BCP { static Connecti ...
最新文章
- Java项目:家庭财务管理系统(java+Springboot+ssm+mysql+maven)
- 【Android 逆向】Android 权限 ( ro.product.cpu.abi 属性 | ro.zygote 属性 | dhcp.eth0 属性 | net.* 属性 )
- 11/28 前端码农日报
- 模糊神经网络_神经网络模型:当网络开始产生类似于人类思维的过程
- JQuery AJAX提交中文乱码的解决方案
- primefaces_使用WildFly 8.2.0.Final,Primefaces 5.1和MySQL 5的JDBC领域和基于表单的身份验证...
- shiro 升级_小米11消息再次确认:骁龙875有独占期,超广角镜头大升级
- 微信公众号的开发 Senparc.Weixin.dll使用
- 互联网技术(java框架、分布式、集群)干货视频大全,不看后悔!(免费下载)
- ImageNet dataset下载
- 效果器的使用技巧-与调音台的无缝连接
- 常用的两款 爱普生epson L801(L系列)清零软件 废墨重置软件 免分下载 内附清零软件使用方法
- 电脑在登陆界面如何打开计算机管理,无线路由器管理界面如何登录 无法进入管理界面怎么办...
- GTK+ GUI库使用现状
- 注塑工艺工程师视频教程 注塑机调机成型参数教程
- csb反编译_GitHub - lyzz0612/csb2csd: cocostudio csb反编成csd
- 【vue】vue中设置路径别名
- VARIANT 类型说明
- 阿龙的学习笔记---ElasticSeach的学习与记录
- java基础(部分)