2010-08-10 24 views
0

在下面的代碼中,我正在執行一個java程序Newsworthy_CA。 該程序打印Newsworthy_CA程序的輸出,但我面臨的困難是僅在完成執行Newsworthy_CA程序後打印整個輸出。 但是我需要在程序執行時同時打印輸出。打印程序的輸出同時運行

此外,我需要child.waitFor()從繼續停止程序,如果發生任何錯誤。

請爲我的要求建議我一些好主意。提前致謝。

注:我在Java的

command = "java Newsworthy_CA"; 
    Process child4 = Runtime.getRuntime().exec(command); 
    try{ 
    c= child4.waitFor(); 
    } catch (Exception ex){ex.printStackTrace();} 
    if (c!=0){ 
    System.out.println("Error Occurred in ("+command+"): "+c); 
    InputStream in4 = child4.getErrorStream(); 
    while ((c = in4.read()) != -1) { 
     System.out.print((char)c); 
    } 
    in4.close(); 
    return; 
    } 
    InputStream in4 = child4.getInputStream(); 
    while ((c = in4.read()) != -1) { 
    System.out.print((char)c); 
    } 
    in4.close(); 

回答

1

初學者如果你想看到來自外部程序的輸出,因爲它執行,你不希望有InputStream的塊WAITFOR上方移動了() ?

隨着代碼的讀取,您可以非常清楚地說,在執行任何操作之前執行並等待完成...包括打印外部程序的輸出(InputStream塊)。

+0

是的......但我想知道是否像往常一樣,waitFor()函數的功能如果我照你說的那樣操作....? – LGAP 2010-08-10 17:35:00

+0

由於waitFor()的javadoc表示,在繼續之前,它將等待Process對象終止(如有必要)。 所以是的,你可以並行地執行其他代碼(你聲明的目標),如果進程沒有完成,你等待waitFor(),它就會等待。 順便說一下,你幾乎可以肯定Process完成了,因爲你等待Process的標準輸出流終止。也就是說,沒有錯誤條件,你將在while(in4.read())循環中,直到進程終止。 – RonU 2010-08-10 22:38:11