JAVA 命令行工具 参数分析样例

apache的commons-cli 1.2 提供的功能,挺方便,做个笔记先

...
  public boolean parseOptions() throws ParseException {
    Options options = new Options();

    Option option = new Option("n", "name", true, "the name of this node");
    options.addOption(option);

    option = new Option("f", "conf-file", true, "specify a conf file");
    options.addOption(option);

    option = new Option("h", "help", false, "display help text");
    options.addOption(option);

    CommandLineParser parser = new GnuParser();
    CommandLine commandLine = parser.parse(options, args);

    if (commandLine.hasOption('f')) {
      configurationFile = new File(commandLine.getOptionValue('f'));

      if (!configurationFile.exists()) {
        // If command line invocation, then need to fail fast
        if (System.getProperty(Constants.SYSPROP_CALLED_FROM_SERVICE) == null) {
          String path = configurationFile.getPath();
          try {
            path = configurationFile.getCanonicalPath();
          } catch (IOException ex) {
            logger.error("Failed to read canonical path for file: " + path, ex);
          }
          throw new ParseException(
              "The specified configuration file does not exist: " + path);
        }
      }
    }

    if (commandLine.hasOption('n')) {
      nodeName = commandLine.getOptionValue('n');
    }

    if (commandLine.hasOption('h')) {
      new HelpFormatter().printHelp("flume-ng node", options, true);

      return false;
    }

    return true;
  }
...

你可能感兴趣的:(java)