2013-01-09 41 views
1

我已經創建了一個JNDI java程序,該程序可以根據用戶規範提供不同類型的輸出。例如用戶可以運行用不同的參數作爲程序:在用戶輸入後將輸出重定向到文本文件

java MyProg -o row -u username -l uId1,uId2,.... 

這裏用戶可以指定選項: -o:爲輸出格式(行的基礎/列的基礎) -u:連接到具有不同用戶服務器(然後程序將要求輸入密碼) -l:程序將顯示給定用戶ID的輸出

現在事情是爲每個選項我定義了一個默認值(配置),所以它的用戶,如果他想要改變配置,然後他將指定選項。因此,用戶可以調用程序爲:

java MyProg 
java Myprog -o col 
java MyProg -u username 
java MyProg -l uId1,uId2,... 
java MyProg -l uId1,uId2,... -o col 

等..

所以每當用戶使用-u(改變用戶名)然後程序會詢問密碼後,它顯示了結果。

現在我想提供一個設備,用戶可以將控制檯輸出重定向到一個文本文件,但是當我嘗試「java MyProg> filename.txt」時,它不起作用。

請告訴我如何將輸出重定向到一個文件。

+0

不要將結果正常打印到標準輸出嗎? – fge

+1

它顯示結果到標準輸出,但我想提供設施給用戶,他可以將結果重定向到一個文件(可選)。 –

+0

好吧,如果shell重定向不起作用,它看起來像結果不會去標準輸出(你說你自己'java MyProg> filename.txt'不重定向任何東西) – fge

回答

1

System.outPrintStream(這就是爲什麼你可以使用諸如println()等方法)。

你可以做的是,如果你看到重定向到文件的選項,只需創建一個新的PrintStream到目標文件:

PrintStream stdout = System.out; 

// outfile is a String 
if (outfile != null) 
    stdout = new PrintStream(outfile); 

而且使用stdout,而不是System.out輸出結果。

+0

可以使用System.setOut(),這樣System.out.println()也會被寫入到指定的文件中。 – Syam