2014-06-23 41 views

回答

3

您可以獲得命令行參數的文件名:

java -jar myapp.jar abc.txt 

java a.b.c.MyApplication abc.txt 

將放置abc.txt成的

public static void main(String[] args) 

args[0]然後你就可以打開該文件,並從Java代碼讀取它。


如果你想要的文件內容(而不是編寫Java代碼來讀取他們),你可以通過System.in讓他們:

java -jar myapp.jar < abc.txt 

(上述要看是什麼樣的位你正在使用的外殼和操作系統)

InputStream data = System.in; 
+0

我已經嘗試了java abc Myapplication abc.txt ultimatly它顯示錯誤消息:錯誤找不到或加載主類謝謝! !!!!!! – user2791673

+0

你在命令行輸入的內容應該是'java YourMainClassName pathOfFile' – SparkOn

0

有時候很難知道從哪裏開始,但是這個問題在其部分已經被回答了很多次。但是,也許爲了幫助你,最好指出你正確的方向。

你想要的步驟是:

1)獲取表示從args數組中的文件路徑,也許類似的字符串:

String filePath = args[0]; 

然而,你將要同時檢查有在args設置爲防止獲得從ARGS讀取數據時(如果沒有被從命令行傳遞)異常的可能性例如一個項目:

String filePath; 

if(args.length > 0){ 
    filePath = args[0]; 
}else{ 
// do something to handle the error, probably exit the program? 
} 

對於任何MO再對這個細節,在這裏看到:Link to java tutorial

2) 然後,你要使用的文件構造函數的字符串做一個文件對象。 Link to javadoc

File inputFile = new File(filePath); 

3) 然後,你需要逐行讀取該文件,行。因爲有很多方法可以做到這一點: Reading from a file - SO question

希望這有助於您。

0

這是代碼,你可能想

String path =arr[0]; //first approach 
    /*Scanner in = new Scanner(System.in); 
    System.out.println("Enter the path of the file..."); // whole block command second approac 
    String path = in.nextLine(); */ 
    File file = new File(path); 
    //apply your logic i just did some reading and writing to a file 
    /*BufferedReader inputStream = new BufferedReader(new InputStreamReader(new FileInputStream(file))); 
    PrintStream out = new PrintStream(new FileOutputStream("a.txt")); 
    while(true) 
    { 
     String line = inputStream.readLine(); 
     if(line == null) 
      break; 
     else 
      out.println(line); 

    } 
    */ 

如果使用第一種方法運行該程序的

java className path_of_file

在第二種方法,它會問你的文件路徑在運行時則你可以輸入文件的路徑。就像java className

+0

感謝您的幫助! – user2791673

+0

你可以給予upvote並接受它作爲你的答案 – SparkOn

相關問題