简单而功能强大的commons CLIWord格式.docx
- 文档编号:14725506
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:9
- 大小:17.85KB
简单而功能强大的commons CLIWord格式.docx
《简单而功能强大的commons CLIWord格式.docx》由会员分享,可在线阅读,更多相关《简单而功能强大的commons CLIWord格式.docx(9页珍藏版)》请在冰豆网上搜索。
选项(option)和参数(arguments)。
选项是用来表明功能或者参数的意思的,例如“-d”这个字符串就是一个选项,它可以表示一个日期。
那么如果我们需要指定一个日期用于处理,就需要在“-d”后面再加上一个具体值,这个具体值就是参数(argument)。
对应于这3个过程,我们来认识几个重要的类:
①定义阶段
A.Option:
这个类用于定义命令行的选项,你可以通过构造方法来定义一个选项
B.Options:
Option的容器,用于存储多个Option
C.OptionBuilder:
使用描述性API来构建Option,而非直接使用Option的构造方法②解析阶段
A.CommandLineParser:
接口,定义了parse方法由实现类实现
B.PosixParser:
Posix风格的命令行解析器
C.GnuParser:
GNU风格的命令行解析器③交互阶段
A.CommandLine:
解析后的命令行对象,可以用于查询选项的值【三】CLI快速入门通常情况下如果命令的选项比较简单我们使用构造方法就够了,但是当选项的属性比较复杂或者描述性文本比较长时,使用构建器会令到程序的可读性更进一步。
下面我们来看看这个需求:
有这样一个命令行,它具备如下的选项和参数组合:
①一个目录选项:
-d,带参数值,必须选项
②一个日期选项:
-D,带参数值,全写--date,可选项
③一个日期范围选项:
-r,带参数值,当-D出现时为必选项,否则该选项无效
④一个文件名前缀选项:
-p,带参数值,可以有多个前缀名,以逗号分隔,可选项
⑤一个文件扩展名选项:
-s,带参数值,可以有多个扩展名,以逗号分隔,可选项
⑥一个文件大小选项:
-S,带参数值,全写--file-size,可选项
⑦一个文件大小阀值选项:
-l,带参数值,当-S出现时为必选项,否则该选项无效
⑧一个帮助信息选项:
-h,无参数值【四】代码示例packageexample.io;
importmons.cli.CommandLine;
importmons.cli.CommandLineParser;
importmons.cli.HelpFormatter;
importmons.cli.Option;
importmons.cli.OptionBuilder;
importmons.cli.Options;
importmons.cli.ParseException;
importmons.cli.PosixParser;
/**
*&
lt;
pre&
gt;
*用于指定各种搜索条件
/pre&
*/
publicclassSearchCommandLineProcesserimplementsCommandLineProcesser{/**
*①一个目录选项:
-d,带参数值,必须选项
*②一个日期选项:
*③一个日期范围选项:
*④一个文件名前缀选项:
-p,带参数值,可以有多个前缀名,以逗号分隔,可选项
*⑤一个文件扩展名选项:
-s,带参数值,可以有多个扩展名,以逗号分隔,可选项
*⑥一个文件大小选项:
-S,带参数值,全写--file-size,可选项
*⑦一个文件大小阀值选项:
-l,带参数值,当-S出现时为必选项,否则该选项无效
*⑧一个帮助信息选项:
-h,无参数值
.
*/privateOptionssearchOpts=newOptions();
privateCommandLinecl=null;
/**
*Themainmethod.
*
*@paramargsthearguments
publicstaticvoidmain(String[]args){
SearchCommandLineProcesserprocesser=newSearchCommandLineProcesser();
processer.run(args);
processer.validte();
}/**
*Instantiatesanewsearchcommandlineprocesser.
publicSearchCommandLineProcesser(){
Stringdesc="
Specifythedirectorywheresearchstart"
;
OptionoptStartDir=OptionBuilder.withDescription(desc).isRequired(false)
.hasArgs().withArgName("
START_DIRECTORY"
).create('
d'
);
searchOpts.addOption(optStartDir);
*Setruleforcommandlineparser,runparsingprocess
*@paramargstheargs
privatevoidrun(String[]args){
setDate();
setDateRange();
setPrefix();
setSuffix();
setSize();
setSizeRange();
setHelp();
runProcess(searchOpts,args,newPosixParser());
*Setsthedate.
publicvoidsetDate(){
Specifythefilecreatedatetime"
OptionoptDate=OptionBuilder.withDescription(desc).isRequired(false)
FILE_CREATE_DATE"
).withLongOpt("
date"
)
.create('
D'
searchOpts.addOption(optDate);
*Setsthedaterange.
publicvoidsetDateRange(){
StringBufferdesc=newStringBuffer(
"
Specifyacceptancedaterangeforcutoffdatespecifybyoption-d"
desc.append("
iftrue,olderfiles(atorbeforethecutoff)"
areaccepted,elsenewerones(afterthecutoff)"
OptionoptDateRange=null;
optDateRange=OptionBuilder.withDescription(desc.toString())
.isRequired(false).hasArg().withArgName("
DATE_RANGE"
r'
searchOpts.addOption(optDateRange);
*Setstheprefix.
publicvoidsetPrefix(){
Specifytheprefixoffile,multipleprefixescanbesplitbycomma"
OptionoptPrefix=OptionBuilder.withDescription(desc)
.isRequired(false).hasArgs().withArgName("
FILE_PREFIXES"
p'
searchOpts.addOption(optPrefix);
*Setsthesuffix.
publicvoidsetSuffix(){
Specifythesuffixoffile,multiplesuffixescanbesplitbycomma"
OptionoptSuffix=OptionBuilder.withDescription(desc)
FILE_SUFFIXES"
s'
searchOpts.addOption(optSuffix);
*Setsthesize.
publicvoidsetSize(){
Spcifythefilesize"
OptionoptSize=OptionBuilder.withDescription(desc).isRequired(false)
.hasArg().withArgName("
FILE_SIZE_WITH_LONG_VALUE"
).withLongOpt(
file-size"
S'
searchOpts.addOption(optSize);
*Setsthesizerange.
publicvoidsetSizeRange(){
String
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单而功能强大的commons CLI 简单 功能强大 commons