首页 > 其他 > 详细

命令行 commons.cli.*

时间:2021-07-28 18:20:34      阅读:5      评论:0      收藏:0      [点我收藏+]
import org.apache.commons.cli.*;

import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;

/**
* @Author: yc
* @Description: cmd
* @Date: 2021/07/23/14:58
*/
public class Test {
private static CommandLine commandLine;
private static Options options = new Options();
private static String HELP_MSG = null;

private static void initTest(String args[]) {

CommandLineParser commandLineParser = new DefaultParser();

// 添加Option(通俗来讲就是添加可操作符)
/*
* 常见的Option:
* builder("h"):h代表一个参数的简短名称,换成自己需要的
* required:是否需要该参数,如果设置为true,则输入命令时需要该参数
* hasArg:代表该参数之后是否有参数,true代表输入该参数之后必须有参数,如输入账户,-n cola
* argName:该参数的名称
* desc:对该参数的描述
* longOpt:该参数的全名,在命令行输入时,简短名称和全名都可被识别,即两个名称有相同的意义,如下面的 -n 和 -name,意义相同
* type:参数类型
* */
options.addOption("help", "show help");
options.addOption(Option.builder("h").required(false).hasArg(true).argName("localhost").desc("the server of localhost").type(String.class).longOpt("hello").build());
options.addOption(Option.builder("s").required(false).hasArg(false).desc("展示").type(String.class).longOpt("show").build());
options.addOption(Option.builder("n").required(false).hasArg(true).argName("账户").desc("账户名").type(String.class).longOpt("name").build());
options.addOption(Option.builder("p").required(false).hasArg(true).argName("密码").desc("用户密码").type(String.class).longOpt("password").build());

try {
commandLine = commandLineParser.parse(options, args);
} catch (ParseException e) {
e.printStackTrace();
// 错误时,输入错误信息并将help信息打印出来
System.out.println(e.getMessage() + "\n" + getHelpString());
System.exit(0);
}

}

// main方法,将项目打成jar包,然后终端运行
public static void main(String[] args) {
initTest(args);
// 判断命令行中是否有-help,如果有,则输出help信息
if (commandLine.hasOption("help")) {
System.out.println(getHelpString());
}
// 判断命令行中是否有-s
if (commandLine.hasOption("s")) {
System.out.println("苹果、香蕉");
}
// 判断命令行中是否有-n
if(commandLine.hasOption("n"))
{
String username = commandLine.getOptionValue("n");
// 判断命令行中是否有-p
if(commandLine.hasOption("p"))
{
// 判断账户和密码是否等于张三、123
String password = commandLine.getOptionValue("p");
if(username.equals("张三") && password.equals("123"))
{
System.out.println("登录成功!!!");
}
else
{
System.out.println("登录失败!!!");
}
}
}
}

/**
* help,一般为固定的格式
* @return
*/
private static String getHelpString() {
if (HELP_MSG == null) {
HelpFormatter helpFormatter = new HelpFormatter();

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
PrintWriter printWriter = new PrintWriter(byteArrayOutputStream);
helpFormatter.printHelp(printWriter, HelpFormatter.DEFAULT_WIDTH, "-help", null,
options, HelpFormatter.DEFAULT_LEFT_PAD, HelpFormatter.DEFAULT_DESC_PAD, null);
printWriter.flush();
HELP_MSG = new String(byteArrayOutputStream.toByteArray());
printWriter.close();
}
return HELP_MSG;
}
}


代码运行效果


技术分享图片

 

 

 

命令行 commons.cli.*

原文:https://www.cnblogs.com/colayc/p/15071415.html

(0)
(0)
   
举报
评论 一句话评论(0
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!