2012-02-28 121 views
0

我正在使用以下代碼從Runtime.Exec()讀取InputStream無法讀取InputStream

CODE:

private String inputstreamReader(String[] shellinput) { 
     InputStream inputstream = null; 
     String isrval = null; 
     System.out.println("Entering inputstreamReader"); 
     try { 
      inputstream = Runtime.getRuntime().exec(shellinput) 
        .getInputStream(); 

      System.out.println("Tried getRuntime().exec :: "+inputstream.read()); 
     } catch (IOException e) { 
      System.out.println("Failed getRuntime().exec"); 
      e.printStackTrace(); 
     } 
     InputStreamReader inputstreamreader = new InputStreamReader(inputstream); 
     try { 
      isrval = new BufferedReader(inputstreamreader).readLine(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
     System.out.println("TEMPfile is "+isrval); 
     return isrval; 

    } 

但它返回:

堆棧跟蹤:

02-28 19:34:20.663: I/System.out(20892): Entering inputstreamReader 
02-28 19:34:20.694: I/System.out(20892): Tried getRuntime().exec :: -1 
02-28 19:34:20.694: I/System.out(20892): TEMPfile is null 

任何想法,爲什麼出現這種情況?

+0

什麼是你想在你的exec運行?你確定這是一個有效的命令嗎?此外,你知道你正在讀輸入的第一個字節,當你inputstream.read(),對不對?無論您對其餘部分的期望如何,這是該代碼中的一個錯誤。 – claesv 2012-02-28 14:30:46

回答

0

要回答你的問題,你可能EXEC失敗,沒有任何輸出,你可以從該行看到:

Tried getRuntime().exec :: -1 

「-1」意味着你已經到達流的末尾。這將導致

new BufferedReader(inputstreamreader).readLine(); 

返回空值,這就是你所看到的:

TEMPfile is null