1

在这一行“ bufferedReader.readLine(); ”之后,下面的代码没有完全执行。当我执行系统命令而不提及远程 PC 的 IPAddress 时,该程序工作正常。

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();    
     }    

}    
}        
4

1 回答 1

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();

于 2012-11-28T12:26:26.087 回答