无法读取InputStream

问题描述:

我正在使用以下代码从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

要回答你的问题,你可能EXEC失败,没有任何输出,你可以从该行看到:

Tried getRuntime().exec :: -1 

“-1”意味着你已经到达流的末尾。这将导致

new BufferedReader(inputstreamreader).readLine(); 

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

TEMPfile is null