2013-05-04 48 views
2

我試圖控制從Java代碼這樣的外部進程:啓動的進程錯誤流爲空

String[] Args = { mPath, "\"" + filePath + "\"" }; 
ProcessBuilder pb = new ProcessBuilder(Args); 
mProcess = pb.start(); 

然後我想從標準錯誤讀的東西:

mError = new BufferedReader(new InputStreamReader(
    mProcess.getErrorStream())); 
if (mError.ready()){ 
    //read 
} 

,並準備()總是返回false。

但經過這樣的:

pb.redirectError(Redirect.to(new File("c:\\err.log"))); 

所有的錯誤信息可在err.log文件中找到。 我在做什麼錯?

+0

...有沒有什麼標準輸出? – radai 2013-05-04 15:14:00

+0

我沒有看到你試圖從錯誤流中讀取 – 2013-05-04 15:16:27

+0

mError.ready()爲false,意味着什麼都不讀 – styanton 2013-05-04 15:52:39

回答

0

請嘗試下面的代碼,它爲我工作。

ProcessBuilder builder = new ProcessBuilder(ARGS); 
builder.redirectErrorStream(true); // setting true 
+0

Does'n的工作,().ready()也是錯誤的。 – styanton 2013-05-04 15:52:17