2013-03-08 31 views
1

我試圖創建一個從文本文件讀取的程序。我用cmd並輸入javac fileName.java來編譯,然後java -cp . fileName來運行它。但是,我想通過編寫java fileName textInput.txt來運行該程序。我已經創建了該程序;但我必須在代碼中指定文本文件的名稱。如何在命令行中指定文本文件

我被告知args[0]應該是文本文件的名稱,但我不知道如何實現這一點。

我還沒有發佈我的代碼,但告訴我,如果我需要。

+1

對於更復雜的命令行參數可以使用共享CLI:http://commons.apache.org/proper/commons-cli// – 2013-03-08 21:05:53

回答

5

如果你有你的類,如下

public class YourClass { 
    public static void main(String[] args) { 
     String fileName = args[0]; // would contain "textInput.txt" 
     // work with fileName 
    } 
} 

運行程序爲java YourClass textInput.txt

字符串數組args包含您在運行java命令時通過的任何參數。它可以是任何東西,不限於文件名。正如Bailey S所說的,這些參數是基於shell的標記化來標記化的。該指數在0

 java YourClass arg1 arg2 arg3 
        ^^^
index:     0 1 2 
+1

它是命令行參數數組在空白處標記化。類似於'string.split(「\ s」)'; – 2013-03-08 21:07:47

+0

謝謝!我修改了我的代碼,它現在可以工作。 – Chase 2013-03-08 21:17:29

+0

標記是由shell(bash,Windows cmd shell等)完成的,所以它不僅僅是空白。例如,「Java YourClass」Hello,World「'通常會給你一個參數,而不是兩個。 – 2013-03-08 21:55:55

3
String filePath = args[0]; 
// Do whatever with the file path 
3
class fileName { 

    public static void main(String[] args) { 

     String filePath = args[0]; 
     //but check if args[0] exist. 

    } 
} 
3

開始任何Java程序的主要方法接收String值其是通過命令行傳遞的參數的陣列:

java javaClass.class arg0 arg1 arg2 

這裏是如何你從代碼中獲得:

public static void main(String[] args) 
{ 
    System.out.println(args[0]); // prints arg0 
    System.out.println(args[1]); // prints arg1 
    System.out.println(args[2]); // prints arg2 
} 

最好檢查參數的數量pass版在使用它們之前:

if(args.length < 0) System.out.println("No arguments are passed!"); 
相關問題