⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 baseconsoleclient.java

📁 本代码以J2SE 5.0为开发环境
💻 JAVA
字号:
package book.string.console;

import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;

/**
 * 命令行程序的基类,是一个抽象类
 * 采用了Apache组织的命令行解析器的包
 */
public abstract class BaseConsoleClient {
    /**帮助选项,参数为-h或者--help,功能描述为Displays help */
    private static final Option HELP =
        OptionBuilder.withDescription("Displays help")
        .withLongOpt("help")
        .create("h");
    /** debug选项,是否打印调试信息     */
    public static final Option DEBUG = new Option("debug", "Enables debug mode");

    // 命令的参数选项
    private Options options = new Options();
    // 命令的帮助信息
    private String usageMsg;
    // 命令的头信息
    private String header;
    //是否debug
    private boolean debugMode; 
    /**
     * 默认构造函数
     */
    protected BaseConsoleClient(){
    	//不打印debug信息
        debugMode = false;
        //将帮助和调试选项添加到命令的参数选项中
        options.addOption(HELP);
        options.addOption(DEBUG);
        //默认帮助信息是类名
        usageMsg = getClass().getName();
    }
    
    /**
     * 增加一个命令的参数选项
     * @param option
     */
    protected void addOption(Option option){
        this.options.addOption(option);
    }
    
    protected void setUsageMsg(String msg){
        this.usageMsg = msg;
    }
    
    protected void setHeader(String header){
        this.header = header;
    }
    
    /**
     * 显示帮助信息
     */
    public void displayUsage(){
        HelpFormatter formatter = new HelpFormatter();
        String header = (this.header == null) ?
                "Options:" : this.header;
        formatter.printHelp(usageMsg, header, options, null, false);
    }
    
    /**
     * 解析命令行参数
     * @param args
     * @return
     * @throws Exception
     */
    public CommandLine parse(String[] args) throws Exception{
        //新建一个命令行解析器
        CommandLineParser parser = new BasicParser();
        //用解析器解析命令行参数
        CommandLine line = parser.parse(options, args);
        //如果命令行中有-h,则打印帮助信息,并退出
        if (line.hasOption("h")){
            displayUsage();
            System.exit(0);
        }      
        if (line.hasOption("debug")){
            this.debugMode = true;
        }
        return line;        
    }
    
    public boolean isDebugMode(){
        return this.debugMode;	
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -