2014-11-24 64 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