使用可选参数创建Runnable jar

时间:2012-12-12 21:05:32

标签: java jar

我遇到的好奇小问题:

我希望客户能够做到这样的事情:

(1)java -jar myJar.jar inputFile outputFile

(2)java -jar myJar.jar text outputFile

outputFile是一个可选参数。

基本上(1)将从文件读取输入,而(2)它们提供我的程序将直接使用的输入。虽然我能想到,但无法确定参数是否是输入或者它是否是文件的位置。对于普通的命令行内容,您可以指定一个类似-i inputfile的标志,以显示您希望它从文件中读取。我有什么选择可以保持客户的易用性?

我唯一的选择是创建客户端必须用于第一个参数的语法吗?即。

"-t text""-i inputFile"

我见过像公共cli这样的库可以实现这个,但我更喜欢不涉及使用库的解决方案。

3 个答案:

答案 0 :(得分:1)

我建议从标准输入(System.in)读取并打印到标准输出(System.out)

这样,不需要参数。对于使用CLI工具的人来说,这非常直观。您可以将输入来源的详细信息留给操作系统。

所以在unix操作系统中,你会使用这样的jar:

echo "some test" | java -jar myjar.jar > outfile

cat somefile | java -jar myjar.jar > outfile

答案 1 :(得分:1)

如果我正确理解了问题,你不能只检查参数的数量而不是明确指定直接输入吗?比如,如果传递了一个arg,则输出第一个arg,如果传递了2个args,则输入第一个arg,输出第二个arg?

话虽如此 - 对于习惯于cli的大多数人来说,使用连字符的'选项'语法可能是最简单的。

答案 2 :(得分:1)

您可以使用

input=text or file=inputfile 

(输出= outputFile为可选)。

在这种情况下,您可以以相同的方式处理所有参数并使用分隔符'='拆分它们,检查'='的左侧以确定它是哪个参数。