2012-02-28 3 views
0

Я использую следующий код для чтения InputStream от Runtime.Exec().Не удалось прочитать InputStream

КОД:

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; 

    } 

Но он возвращает:

StackTrace:

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

ответ

0

Чтобы ответить на ваш вопрос, ваш Exec вероятно, не может без какого-либо выхода, как вы можете видеть из этой линии:

Tried getRuntime().exec :: -1 

«-1» означает, что вы достигли конца потока. Это приводит к

new BufferedReader(inputstreamreader).readLine(); 

вернуть нуль, и это то, что вы видите:

TEMPfile is null