我試圖創建一個從文本文件讀取的程序。我用cmd
並輸入javac fileName.java
來編譯,然後java -cp . fileName
來運行它。但是,我想通過編寫java fileName textInput.txt
來運行該程序。我已經創建了該程序;但我必須在代碼中指定文本文件的名稱。如何在命令行中指定文本文件
我被告知args[0]
應該是文本文件的名稱,但我不知道如何實現這一點。
我還沒有發佈我的代碼,但告訴我,如果我需要。
我試圖創建一個從文本文件讀取的程序。我用cmd
並輸入javac fileName.java
來編譯,然後java -cp . fileName
來運行它。但是,我想通過編寫java fileName textInput.txt
來運行該程序。我已經創建了該程序;但我必須在代碼中指定文本文件的名稱。如何在命令行中指定文本文件
我被告知args[0]
應該是文本文件的名稱,但我不知道如何實現這一點。
我還沒有發佈我的代碼,但告訴我,如果我需要。
如果你有你的類,如下
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
它是命令行參數數組在空白處標記化。類似於'string.split(「\ s」)'; – 2013-03-08 21:07:47
謝謝!我修改了我的代碼,它現在可以工作。 – Chase 2013-03-08 21:17:29
標記是由shell(bash,Windows cmd shell等)完成的,所以它不僅僅是空白。例如,「Java YourClass」Hello,World「'通常會給你一個參數,而不是兩個。 – 2013-03-08 21:55:55
String filePath = args[0];
// Do whatever with the file path
class fileName {
public static void main(String[] args) {
String filePath = args[0];
//but check if args[0] exist.
}
}
開始任何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!");
對於更復雜的命令行參數可以使用共享CLI:http://commons.apache.org/proper/commons-cli// – 2013-03-08 21:05:53