您的位置:首页 > 运维架构 > Apache

commons-cli使用介绍

2016-04-13 16:57 543 查看
commons-cli
是Apache开源组织提供的用于解析命令行参数的包,命令行的处理共分为三个阶段:定义阶段、解析阶段和审讯阶段。

在定义阶段,我们需要使用
Options
类来定义我们需要使用的命令。

方法摘要:

返回值方法名说明
OptionsaddOption(Option opt)添加一个选项实例
OptionsaddOption(String opt, boolean hasArg, String description)添加一个只包含短名称的选项
OptionsaddOption(String opt, String description)添加一个只包含短名称的选项
OptionsaddOption(String opt, String longOpt, boolean hasArg, String description)添加一个包含短名称和长名称的选项
OptionsaddOptionGroup(OptionGroup group)添加一个选项组
List<String>getMatchingOptions(String opt)获得匹配选项的长名称集合
OptiongetOption(String opt)通过长名称或短名称获得选项
OptionGroupgetOptionGroup(Option opt)获得选项所在的选项组
CollectiongetOptions()获得一个只读的选项集合
ListgetRequiredOptions()获得必须的选项集合
booleanhasLongOption(String opt)判断是否存在选项
booleanhasOption(String opt)判断是否存在选项
booleanhasShortOption(String opt)判断是否存在选项
在解析阶段,我们需要使用
DefaultParser
来解析命令行参数。
DefaultParser
实现了
CommandLineParser
接口,解析命令行参数完成后会返回
CommandLine
对象,在审讯阶段,我们就需要
CommandLine
对象来完成我们实际的工作。

部分方法摘要:

返回值方法名说明
ListgetArgList()获得参数集合
String[]getArgs()获得参数数组
Option[]getOptions()获得选项数组
StringgetOptionValue(char opt)获得选项值
StringgetOptionValue(char opt, String defaultValue)获得选项值
StringgetOptionValue(String opt)获得选项值
StringgetOptionValue(String opt, String defaultValue)获得选项值
booleanhasOption(char opt)判断是否含有选项
booleanhasOption(String opt)判断是否含有选项
下面我们通过一段示例来完成列出指定目录下所有文件信息的功能。

示例代码:

package com.gujin.cli;

import java.io.File;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.junit.Test;

public class CLITest
{
@Test
public void test() throws ParseException
{
// 模拟命令行参数
String[] args = { "-dir", ".", "-t" };
testParser(args);
}

public void testParser(String[] args) throws ParseException
{
Options options = new Options();
options.addOption("dir", true, "root folder path.");
options.addOption("t", false, "file last modify time.");

CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args);
if (cmd.hasOption("dir"))
{
File dir = new File(cmd.getOptionValue("dir"));
if (dir.exists())
{
if (cmd.hasOption("t"))
{
File[] files = dir.listFiles();
if (files != null)
{
for (File file : files)
{
System.out.println(file.getName() + " "
+ file.lastModified());
}
}
}
else
{
String[] files = dir.list();
if (files != null)
{
for (String file : files)
{
System.out.println(file);
}
}
}
}
else
{
System.out.println(dir.getAbsolutePath() + " not exists.");
}
}
else
{
System.out.println("not has dir option.");
}
}
}


运行结果:

.classpath 1460357174453
.project 1459855420531
.settings 1459855435609
bin 1460357176515
file 1460184797968
lib 1460357165859
md 1460511999796
src 1460094266062
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息