Java 中的命令行解析
本文介绍如何在 java 中执行命令行解析。
Java 中的命令行解析
有时,要执行 Java 程序,我们需要在运行程序之前进行一些基本输入。通常,这些输入由命令行参数提供。在 Java 中,命令行参数保存在 main()
函数内的 String[] args
中。
为了从终端/命令提示符接受参数,我们需要在 Java 程序中定义选项。你传递的每个命令行参数都需要存储在选项中。在下面的代码示例中,创建的两个选项涉及复制和粘贴现象。请看说明。
import org.apache.commons.cli.*;
public class Main {
public static void main(String[] args) throws Exception {
Options options = new Options(); // Options Arguments which are Acceptable By Program.
Option source = new Option("s", "source", true, "source file path");
source.setRequired(true);
options.addOption(source);
Option destination = new Option("d", "Destination", true, "Destination file Path");
destination.setRequired(true);
options.addOption(destination);
CommandLineParser parser = new BasicParser();
// use to read Command Line Arguments
HelpFormatter formatter = new HelpFormatter(); // // Use to Format
CommandLine cmd = null;
try {
cmd = parser.parse(options, args); //it will parse according to the options and parse option value
} catch (ParseException e) {
System.out.println(e.getMessage());
formatter.printHelp("utility-name", options);
System.exit(1);
}
String argument1 = cmd.getOptionValue("source");
String argument2 = cmd.getOptionValue("Destination");
System.out.println(argument1 );
System.out.println(argument2);
}
}
在上面的程序中创建了两个选项。一个是源头,一个是目的地。在创建 source
选项时,我们将其短期参数指定为 s
并将其命名为 source。s
是获取源参数值的命令。运行程序时,用户必须使用 -s
作为命令,后跟其值。请参阅下面的输出。我们还将要求设置为 true 并将描述作为源文件路径。后来我们在选项中添加了这个源选项参数。同样,对于选项 destination
,我们执行了具有不同值的相同操作。
在解析这两个选项时,我们创建了一个 CommandLineParser
对象。在 HelpFormatter
的帮助下,如果需要显示异常,我们可以格式化命令参数。
在 try...catch
方法中,使用 parse()
来解析参数 options
和 args
。然后我们简单地使用 getOptionValue()
获取选项的值并在括号内传递选项的名称。
我们只是打印值。另一方面,你可以使用这种方法运行不同的程序。
要运行该程序,我们必须使用以下命令。
javac -cp 'org.apache.commons.cli-1.2.0.jar' Main.java
java -cp 'org.apache.commons.cli-1.2.0.jar' Main.java -s 'D://textfile.txt' -d 'D://DuplicatFolder//'
这里,-s
和 -d
是命令。它们后面分别是它们的值。例如,在上面的程序中,我们将为 s
放置源路径,为 d
放置目标路径。
上面的程序将给出以下输出。
D://textfile.txt
D://DuplicatFolder//
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn