我對這些流感到困惑......哪個是哪個?Java進程getInputStream與getOutputStream
簡單地說,我應該使用哪個流來捕獲我的Process的輸出,以及我應該使用哪個流來給我的Process輸入一些信息?
我對這些流感到困惑......哪個是哪個?Java進程getInputStream與getOutputStream
簡單地說,我應該使用哪個流來捕獲我的Process的輸出,以及我應該使用哪個流來給我的Process輸入一些信息?
您只能從InputStream
中讀取,因此請使用它來捕獲流程的輸出。
你寫信給OutputStream
,所以用它來給你的輸入提供過程。
您正在使用在生成過程的上下文中有意義的名稱。但是API名稱在父進程的上下文中是有意義的。
以下是另一個提示:如果您的流程寫入標準錯誤,請務必閱讀。如果子進程的標準輸出或錯誤管道已滿(因爲您的父級Java進程沒有使用它們),子進程將阻塞其write()
調用。
我覺得很confising來,不是說有缺陷的。在提供這種方法的對象的上下文中,它不是一個核心的面向對象設計模式嗎? – rds 2011-12-07 15:52:33
getOutputStream是輸入到的過程。 getInputStream的輸出是從讀取的過程。如果有幫助,請參考JavaDocs。
我總是忽略名稱並查看返回的內容。如果你的代碼有一個OutputStream
,你可以寫入它 - 這意味着它的輸入其他進程。如果你的代碼有InputStream
,你可以從它讀取 - 這意味着它的輸出或其他進程的錯誤。
幸運的是,編譯器會告訴你,如果你在做錯誤的事情 - 你已經得到了你想要provde數據,因此你將它寫入流,這意味着它的有到是OutputStream
。
看看文檔。與其他以「明顯」方式實現它的框架相比,這實際上完全是一團糟,所以文檔就是你的朋友。
public abstract OutputStream getOutputStream()
> Gets the output stream of the subprocess. Output to the stream is piped into the standard input stream of the process
本來應該過於簡單有:
public abstract InputStream getInputStream()
> Gets the standarinput stream of the subprocess. Output to the stream is piped into the standard input stream of the process
討厭這個,真的令人困惑 – khachik 2010-11-19 19:58:40