ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:17.85KB ,
资源ID:1805140      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1805140.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(简单而功能强大的commons CLI.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

简单而功能强大的commons CLI.docx

1、简单而功能强大的commons CLI简单而功能强大的commons CLI 【一】需求前面我们使用了commons io包中的DirectoryWalker和IOFileFilter来进行复杂条件的搜索,但是这个程序有几个问题: 选项都是hard code在代码里面,难以修改 有些选项是必需的,有些选项是可选的 有些选项是不带参数的,有些选项是要带参数的如果我们希望这个程序能够更加灵活,根据人性化,那么我们需要提供一个界面,无论是普通的命令行、控制台交互、GUI界面。而且还必须让用户自行决定是否要使用该选项。程序必须自动根据已有的条件动态组合【二】简单而功能强大的commons CLIApa

2、che commons CLI是一个开源的,用于处理命令行的工具包。这个包目前的稳定版本是1.2,他非常简单只有20个左右的class,但提供了几乎所以可以用到的命令行功能。它的主页在这里:Apache commons CLI根据CLI的逻辑,每一个命令行的处理都可以分为3个步骤:定义、解析、交互 定义:定义命令行的各种选项属性(包括缩写、全写、是否必须、是否带参数、参数个数限制) 解析:使用解析器对命令行选项列表进行解析 交互:从解析好的命令行查询用户输入的参数值并进行处理这里需要区分两个名词:选项(option)和参数(arguments)。选项是用来表明功能或者参数的意思的,例如“-d”

3、这个字符串就是一个选项,它可以表示一个日期。那么如果我们需要指定一个日期用于处理,就需要在“-d”后面再加上一个具体值,这个具体值就是参数(argument)。对应于这3个过程,我们来认识几个重要的类:定义阶段 A.Option:这个类用于定义命令行的选项,你可以通过构造方法来定义一个选项 B.Options:Option的容器,用于存储多个Option C.OptionBuilder:使用描述性API来构建Option,而非直接使用Option的构造方法解析阶段 A.CommandLineParser:接口,定义了parse方法由实现类实现 B.PosixParser:Posix风格的命令行

4、解析器 C.GnuParser:GNU风格的命令行解析器交互阶段 A.CommandLine:解析后的命令行对象,可以用于查询选项的值【三】CLI快速入门通常情况下如果命令的选项比较简单我们使用构造方法就够了,但是当选项的属性比较复杂或者描述性文本比较长时,使用构建器会令到程序的可读性更进一步。下面我们来看看这个需求:有这样一个命令行,它具备如下的选项和参数组合: 一个目录选项:-d,带参数值,必须选项 一个日期选项:-D,带参数值,全写-date,可选项 一个日期范围选项:-r,带参数值,当-D出现时为必选项,否则该选项无效 一个文件名前缀选项:-p,带参数值,可以有多个前缀名,以逗号分隔,

5、可选项 一个文件扩展名选项:-s,带参数值,可以有多个扩展名,以逗号分隔,可选项 一个文件大小选项:-S,带参数值,全写-file-size,可选项 一个文件大小阀值选项:-l,带参数值,当-S出现时为必选项,否则该选项无效 一个帮助信息选项:-h,无参数值【四】代码示例package example.io;import mons.cli.CommandLine;import mons.cli.CommandLineParser;import mons.cli.HelpFormatter;import mons.cli.Option;import mons.cli.OptionBuilder;

6、import mons.cli.Options;import mons.cli.ParseException;import mons.cli.PosixParser;/* * <pre> * 用于指定各种搜索条件 * </pre> */public class SearchCommandLineProcesser implements CommandLineProcesser /* * <pre> * 一个目录选项:-d,带参数值,必须选项 * 一个日期选项:-D,带参数值,全写-date,可选项 * 一个日期范围选项:-r,带参数值,当-D出现时为必选项,

7、否则该选项无效 * 一个文件名前缀选项:-p,带参数值,可以有多个前缀名,以逗号分隔,可选项 * 一个文件扩展名选项:-s,带参数值,可以有多个扩展名,以逗号分隔,可选项 * 一个文件大小选项:-S,带参数值,全写-file-size,可选项 * 一个文件大小阀值选项:-l,带参数值,当-S出现时为必选项,否则该选项无效 * 一个帮助信息选项:-h,无参数值 * </pre>. */ private Options searchOpts = new Options(); private CommandLine cl = null; /* * The main method. * *

8、 param args the arguments */ public static void main(String args) SearchCommandLineProcesser processer = new SearchCommandLineProcesser(); processer.run(args); processer.validte(); /* * Instantiates a new search command line processer. */ public SearchCommandLineProcesser() String desc = Specify the

9、 directory where search start; Option optStartDir = OptionBuilder.withDescription(desc).isRequired(false) .hasArgs().withArgName(START_DIRECTORY).create(d); searchOpts.addOption(optStartDir); /* * Set rule for command line parser, run parsing process * * param args the args */ private void run(Strin

10、g args) setDate(); setDateRange(); setPrefix(); setSuffix(); setSize(); setSizeRange(); setHelp(); runProcess(searchOpts, args, new PosixParser(); /* * Sets the date. */ public void setDate() String desc = Specify the file create date time; Option optDate = OptionBuilder.withDescription(desc).isRequ

11、ired(false) .hasArgs().withArgName(FILE_CREATE_DATE).withLongOpt(date) .create(D); searchOpts.addOption(optDate); /* * Sets the date range. */ public void setDateRange() StringBuffer desc = new StringBuffer( Specify acceptance date range for cutoff date specify by option -d); desc.append(if true, ol

12、der files (at or before the cutoff); desc.append(are accepted, else newer ones (after the cutoff); Option optDateRange = null; optDateRange = OptionBuilder.withDescription(desc.toString() .isRequired(false).hasArg().withArgName(DATE_RANGE) .create(r); searchOpts.addOption(optDateRange); /* * Sets th

13、e prefix. */ public void setPrefix() String desc = Specify the prefix of file, multiple prefixes can be split by comma; Option optPrefix = OptionBuilder.withDescription(desc) .isRequired(false).hasArgs().withArgName(FILE_PREFIXES) .create(p); searchOpts.addOption(optPrefix); /* * Sets the suffix. */

14、 public void setSuffix() String desc = Specify the suffix of file, multiple suffixes can be split by comma; Option optSuffix = OptionBuilder.withDescription(desc) .isRequired(false).hasArgs().withArgName(FILE_SUFFIXES) .create(s); searchOpts.addOption(optSuffix); /* * Sets the size. */ public void setSize() String desc = Spcify the file size; Option optSize = OptionBuilder.withDescription(desc).isRequired(false) .hasArg().withArgName(FILE_SIZE_WITH_LONG_VALUE).withLongOpt( file-size).create(S); searchOpts.addOption(optSize); /* * Sets the size range. */ public void setSizeRange() String

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1