2013-04-21 78 views
3

我想輸出流設置爲命令提示符是這樣的:Set System.setOut();到命令提示符

Process p = Runtime.getRuntime() 
       .exec("C:\\Windows\\System32\\cmd.exe /c start cls"); 
System.setOut(new PrintStream(p.getOutputStream())); 

,但它是不工作的,爲什麼?

+0

見http://stackoverflow.com/questions/4157303/how-to-execute-cmd-commands-via-java(公認的答案下面的答案) – ddmps 2013-04-21 17:12:59

+0

但不執行命令在CMD ...所以這是不可接受的。 – 2013-04-21 17:26:42

回答

0

默認情況下,PrintStream s不會自動刷新寫入它們的內容。這意味着您寫入的數據不會立即發送到它所繞過的數據流。但是,如果使用new PrintStream(p.getOutputStream(), true)構造PrintStream,則在調用任何println方法時,它將自動刷新,寫入字節數組或寫入換行符。這樣,您寫入的任何內容都可以立即訪問該進程。

http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html

+0

這不是這裏的問題。 – ddmps 2013-04-21 17:11:18

+0

好吧,我已經完成了這個'新的PrintStream(p.getOutputStream(),true)'但仍然沒有獲得cmd的消息,爲什麼? – 2013-04-21 17:13:38