1

我在这里遇到的好奇的小问题:

我希望客户能够执行以下操作:

(1)java -jar myJar.jar inputFile outputFile

或者

(2)java -jar myJar.jar text outputFile

outputFile是一个可选参数。

本质上(1)将为他们从文件中读取输入,而(2)他们提供我的程序将直接使用的输入。尽管我能想到,但无法确定参数是输入还是文件的位置。对于普通的命令行内容,您可以指定一个标志,-i inputfile以表明您希望它从文件中读取。我在这里有哪些选择可以保持客户的易用性?

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

"-t text"还是"-i inputFile"

我见过诸如 commons cli 之类的库可以实现这一点,但我更喜欢不涉及使用库的解决方案。

4

3 回答 3

1

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

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

因此,在 unix 操作系统中,您将使用类似这样的 jar:

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

或者

cat somefile | java -jar myjar.jar > outfile
于 2012-12-12T21:16:09.233 回答
1

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

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

于 2012-12-12T21:22:32.387 回答
1

您可以使用

input=text or file=inputfile 

(输出=输出文件作为可选)。

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

于 2012-12-12T21:31:01.150 回答