2014-11-24 54 views
0

我正在查看正常情况下在命令行上启动程序。 (即Java的myprogram)在程序执行时进行输入

但是我知道这是可能键入

java myprogram configfile.txt 

所以需要这个字符串,并稍后在代码中,我可以用它来加载文件。

如何在程序中使用类似构造函数的方式捕获此输入。

+4

您是否搜索过获取Java命令行输入的内容? – 2014-11-24 22:44:22

+0

[Java命令行参数]的可能重复(http://stackoverflow.com/questions/716153/java-command-line-arguments) – 2014-11-24 22:49:00

回答

5
public static void main(String[] args) { ... } 

args数组包含来自命令行的参数。在你的例子中,文件名将是args[0]。但是请注意,如果您将args[0]硬编码到您的代码中,那么请不要传递参数,否则您将获得ArrayIndexOutOfBoundsException,因为args[0]不存在。

如果需要,您可以将其扩展为包含多个参数。例如

java myprogram configfile.txt configfile2.txt configfile3.txt 

这些文件名会分别是args[0]args[1]args[2]

如果您的程序可以带或不带参数运行,你可以找到,如果你通过检查数组的长度有一定> 0喜欢的东西

if (args.length > 0) { myfile = args[0]; } 
else { myFile = someDefaultFilename; } 

,或者如果可以有多个参数,你可以遍历整个阵列

for (String s : args) { //Do something with each parameter } 
+2

感谢您观看我的背影。 – csmckelvey 2014-11-24 22:49:54

+0

我该如何做代码来检查是否通过了一个参数?如果执行if语句,则会抛出此异常(args [0]!= null){ \t \t \t filename = args [0]; \t \t \t} – chostwales 2014-11-24 22:59:30

+0

我会将其添加到答案。 – csmckelvey 2014-11-24 23:01:43