2010-04-22 9 views
5

मैं एक स्ट्रिंग बफर में शेल कमांड के आउटपुट को पढ़ने की कोशिश कर रहा हूं, इस तथ्य को छोड़कर, मूल्यों को खोल आउटपुट में प्रत्येक दूसरी पंक्ति के अलावा मूल्यों को पढ़ना और जोड़ना ठीक है। उदाहरण के लिए , मेरे पास 10 पंक्तियां ओडी खोल आउटपुट हैं और यह कोड केवल 1, 3, 5, 7, 9, पंक्ति संग्रहीत करता है। क्या कोई यह बता सकता है कि मैं इस कोड के साथ हर पंक्ति को पकड़ने में सक्षम क्यों नहीं हूं ??? कोई सुझाव या विचार का स्वागत किया है :)भंडारण शैल आउटपुट

import java.io.*; 

public class Linux { 

    public static void main(String args[]) { 


     try { 
     StringBuffer s = new StringBuffer(); 

    Process p = Runtime.getRuntime().exec("cat /proc/cpuinfo"); 
    BufferedReader input = 
      new BufferedReader(new InputStreamReader(p.getInputStream())); 
    while (input.readLine() != null) { 
     //System.out.println(line); 
    s.append(input.readLine() + "\n"); 

    } 
    System.out.println(s.toString()); 



} catch (Exception err) { 
    err.printStackTrace(); 
} } 
} 

उत्तर

3

हर बार जब आप फोन input.readLine() आप एक नई लाइन पढ़ रहे हैं। आप while() कथन के अंदर जो भी पढ़ते हैं उसके साथ कुछ भी नहीं कर रहे हैं, आप बस इसे फर्श पर गिरने दे रहे हैं। आपको अस्थायी रूप से अपना मूल्य संग्रहीत करने और लूप के शरीर के भीतर संसाधित करने की आवश्यकता होगी। जब अपने कोड धागा सुरक्षित यह बजाय StringBuilder उपयोग करने के लिए बेहतर है होना करने के लिए की जरूरत नहीं है

StringBuilder s = new StringBuilder(); 
Process p = Runtime.getRuntime().exec("cat /proc/cpuinfo"); 
BufferedReader input = 
    new BufferedReader(new InputStreamReader(p.getInputStream())); 
String line = null; 
//Here we first read the next line into the variable 
//line and then check for the EOF condition, which 
//is the return value of null 
while((line = input.readLine()) != null){ 
    s.append(line); 
    s.append('\n'); 
} 

एक अर्द्ध संबंधित टिप्पणी, पर:

+0

हैलो, आपके उत्तर के लिए धन्यवाद। मैं यह भी जबकि (! S.append (input.readLine()) = नल) { \t //System.out.println(line) के साथ की कोशिश की, \t s.append (input.readLine() + "\ n"); } लेकिन कोड फंस गया है, क्या आप मुझे एक उदाहरण पेस्ट कर सकते हैं ?? –

7

यहाँ कोड है कि मैं आम तौर पर इस तरह की परिस्थितियों में BufferedReader के साथ उपयोग करते स्ट्रिंगबफर के रूप में स्ट्रिंगबफर सिंक्रनाइज़ किया गया है।