2014-01-17 66 views
1

我在運行java文件時無法從命令行讀取參數和stdin。我可以自己閱讀參數,並且可以自行閱讀stdin,但不能在一起;例如:從命令行讀取stdin和參數java

java myFile 6 2 < numbers.txt 

我可以讓它存儲陣列中的6和2,但隨後只是存儲「<」和「的text.txt」也。我一直無法在網上找到任何描述類似問題的東西,所以不確定從哪裏開始。

+5

將您的代碼可能是非常有幫助這裏 –

+1

的'> file.txt'口頭禪是越來越多的Unix風格,而且我不確定Java會支持這一點(因爲來自'args []'的所有參數都變成'main()')。您是否嘗試用Java寫出一個文件? – Makoto

+0

您不應該使用'<'進行輸入重定向嗎? – blackcompe

回答

2

命令行參數在main方法的String[]-type參數中收到。輸入重定向與在命令行調用的任何其他進程相同。通過從stdin讀取字節可以檢索,直到達到EOF

命令:java myClass myArg < myFile

public static void main(String[] args) 
{ 
    System.out.println("Arg 1 = " + args[0] + "\nStdin = "); 
    try (InputStreamReader isr = new InputStreamReader(System.in)) { 
     int ch; 
     while((ch = isr.read()) != -1) 
      System.out.print((char)ch); 
    }catch(IOException e) { 
     e.printStackTrace(); 
    } 
} 

欲瞭解更多信息:

http://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html http://docs.oracle.com/javase/tutorial/essential/io/cl.html

+0

完美!你能描述一下代碼如何知道參數和stdin之間的區別嗎? – user2152251

+0

@ user2152251:我更新了我的帖子。 – blackcompe

+0

非常感謝,所以如果我要讀取一個字符串文件(與此實例中的整數相反)到一個數組中,我將不得不將相關的整數更改爲字符串,並放置數組插入行而不是打印行。 – user2152251