我在運行java文件時無法從命令行讀取參數和stdin。我可以自己閱讀參數,並且可以自行閱讀stdin,但不能在一起;例如:從命令行讀取stdin和參數java
java myFile 6 2 < numbers.txt
我可以讓它存儲陣列中的6和2,但隨後只是存儲「<」和「的text.txt」也。我一直無法在網上找到任何描述類似問題的東西,所以不確定從哪裏開始。
我在運行java文件時無法從命令行讀取參數和stdin。我可以自己閱讀參數,並且可以自行閱讀stdin,但不能在一起;例如:從命令行讀取stdin和參數java
java myFile 6 2 < numbers.txt
我可以讓它存儲陣列中的6和2,但隨後只是存儲「<」和「的text.txt」也。我一直無法在網上找到任何描述類似問題的東西,所以不確定從哪裏開始。
命令行參數在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
完美!你能描述一下代碼如何知道參數和stdin之間的區別嗎? – user2152251
@ user2152251:我更新了我的帖子。 – blackcompe
非常感謝,所以如果我要讀取一個字符串文件(與此實例中的整數相反)到一個數組中,我將不得不將相關的整數更改爲字符串,並放置數組插入行而不是打印行。 – user2152251
將您的代碼可能是非常有幫助這裏 –
的'> file.txt'口頭禪是越來越多的Unix風格,而且我不確定Java會支持這一點(因爲來自'args []'的所有參數都變成'main()')。您是否嘗試用Java寫出一個文件? – Makoto
您不應該使用'<'進行輸入重定向嗎? – blackcompe