2012-11-28 107 views
1

下面的代碼在「bufferedReader.readLine();」這行之後沒有完全執行。該程序工作正常,當我執行系統命令 出提及遠程PC的IP地址。BufferedReader未按預期方式工作

class Test  
{  
public static void main(String arg[])  
{  
    Process p;  
    Runtime runTime;  
    String process = null;  
    try {  
     runTime = Runtime.getRuntime();  
     p = runTime.exec("sc \\xx.xx.xx.xx query gpsvc");  // For Windows  
     InputStream inputStream = p.getInputStream();  
     InputStreamReader inputStreamReader = new InputStreamReader(inputStream);  
     BufferedReader bufferedReader = new BufferedReader(inputStreamReader);  
     String line = bufferedReader.readLine();  
     process = "&";  
     while (line != null) {  
      line = bufferedReader.readLine();  
      process += line + "&";  
     }  
     StringTokenizer st = new StringTokenizer(proc, "&");  
     System.out.println("token size "+st.countTokens());  
     while (st.hasMoreTokens()) {   
      String testData = st.nextToken();  
     bufferedReader.close();  
     inputStreamReader.close();  
     inputStream.close();  
     }  

    } catch (IOException e) {  
     System.out.println("Exception arise during the read Processes");  
     e.printStackTrace();  
    }  

}  
}   
+8

您是否收到任何錯誤?你得到什麼輸出?發生了什麼 - 你怎麼知道它不起作用?你期待代碼做什麼?當你說「它不工作」時,很難知道如何提供幫助。 – wattostudios

+0

執行沒有完成。我使用exec函數執行上述命令,使用'bufferedReader.readLine();'讀取響應。執行停止,並且程序進入死鎖狀態。我沒有得到任何錯誤,輸出或異常,因爲它已經進入阻止狀態 – user1608896

回答

1

檢查命令裏面exec方法

p = runTime.exec("sc \\xx.xx.xx.xx query gpsvc");

的語法錯在這裏,如果你從命令提示符下執行此,您將與以下問題進行提示。

Would you like to see help for the QUERY and QUERYEX commands? [ y | n ]: 

並且只有在輸入y或n之後程序纔會返回。由於該程序沒有終止,因此您將無法讀取控制檯輸出,這就是您的程序卡住的原因。String line = bufferedReader.readLine();

+0

@ Mr.Jiji Sasidharan是老闆,該命令在命令提示符下工作。我輸入了相同的命令 「sc \\ xx.xx.xx.xx查詢<服務名稱>」。它給了我服務的狀態,它允許 進入下一個命令 – user1608896