java - 如何在 Java 中解析命令行参数?

标签 java command-line command-line-arguments

在 Java 中解析命令行参数的好方法是什么?

最佳答案

看看这些:

或者自己动手:


例如,这就是您使用 commons-cli 的方式解析 2 个字符串参数:

import org.apache.commons.cli.*;

public class Main {


    public static void main(String[] args) throws Exception {

        Options options = new Options();

        Option input = new Option("i", "input", true, "input file path");
        input.setRequired(true);
        options.addOption(input);

        Option output = new Option("o", "output", true, "output file");
        output.setRequired(true);
        options.addOption(output);

        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();
        CommandLine cmd = null;//not a good practice, it serves it purpose 

        try {
            cmd = parser.parse(options, args);
        } catch (ParseException e) {
            System.out.println(e.getMessage());
            formatter.printHelp("utility-name", options);

            System.exit(1);
        }

        String inputFilePath = cmd.getOptionValue("input");
        String outputFilePath = cmd.getOptionValue("output");

        System.out.println(inputFilePath);
        System.out.println(outputFilePath);

    }

}

命令行使用:

$> java -jar target/my-utility.jar -i asd                                                                                       
Missing required option: o

usage: utility-name
 -i,--input <arg>    input file path
 -o,--output <arg>   output file

关于java - 如何在 Java 中解析命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/367706/

相关文章:

java - 从 void 方法写入文件

java - 如何保持监听器线程 Activity

android - 如何在 Android UIAutomator -e 命令行参数中发送带空格的文本

java - linkedInDistributionTarget 是必需的,即使它为空

Java 如何自动选中下面的复选框?

linux - 如何在 bash 中使用 'while ..; do..; done'

sql-server - 用于备份 SQL Server 数据库的简单命令行程序或脚本是什么?

bash - bash 脚本中的算术问题

linux - Linux系统调用的多个命令

c - 无需在 main 中使用 char **argv 即可访问命令行参数