2013-07-16 11 views
7

के अंत लिए जाँच अगर मैं अपने कोड में कुछ इस तरह है:BufferedReader साथ पंक्तियों को पढ़ने और फ़ाइल

String line = r.readLine(); //Where r is a bufferedReader 

मुझे कैसे एक दुर्घटना से बच सकते हैं, तो अगली पंक्ति फ़ाइल के अंत नहीं है? (यानी शून्य)

मुझे अगली पंक्ति को पढ़ने की ज़रूरत है क्योंकि वहां कुछ ऐसा हो सकता है जिसके साथ मुझे निपटने की ज़रूरत है, लेकिन यदि कोड नहीं है तो क्रैश हो जाता है।

यदि वहां कुछ है तो सब ठीक है, लेकिन मुझे गारंटी नहीं दी जा सकती है कि वहां कुछ भी होगा।

इसलिए मैं कुछ ऐसा करते हैं: (छद्म कोड):

if (r.readLine is null) 
//End code 

else {check line again and excecute code depending on what the next line is} 

मुद्दा मैं कुछ इस तरह से है, कि जब मैं अशक्त के खिलाफ लाइन की जाँच करें, यह पहले से ही अगली पंक्ति पर ले जाता है, तो मैं इसे फिर से कैसे देख सकता हूं?

मैंने ऐसा करने का कोई तरीका नहीं बनाया है - कोई सुझाव बहुत मददगार होगा।

while((line=br.readLine())!=null){ 
    System.out.println(line); 
} 
br.close(); 
+1

वास्तव में इच्छा है कि लोग डाउन-वोटिंग के दौरान एक कारण छोड़ दें। एक डाउन-वोट यह इंगित करना है कि किसी प्रश्न के साथ कुछ गड़बड़ है ताकि शायद इसे दोबारा सुधार किया जा सके। डाउनवॉइंटिंग के कारण बिना किसी कारण को छोड़ दिया गया है कि – Zippy

उत्तर

23

Am ... आप बस इस तरह के निर्माण का उपयोग कर सकते । i.e .:

String s = ""; 
while (true) { 
    try { 
     s = r.readline(); 
    }catch(NullPointerException e) { 
     r.close(); 
     break; 
    } 
    //Do stuff with line 
} 

हर किसी को क्या दुख है, यह भी काम करना चाहिए।

+4

जैसा कि आपने पहले जवाब दिया था, मैं अपना हटा दूंगा :) – Azad

2

आप का उपयोग है कि सभी लाइनों के माध्यम से लूप चाहते हैं:

-2

आप जानबूझकर यह त्रुटि अपने पाश अंदर फेंक सकते थे:

String line; 

while ((line = r.readLine()) != null) { 
    // do your stuff... 
} 
+2

यह संभवतः यह करने का सबसे बुरा तरीका है ... – Raven

+0

@Raven क्यों है यह इतना बुरा है? मुझे इसके साथ कुछ भी गलत नहीं दिख रहा है ... –

+0

क्या यह वास्तव में 'NullPointerException' फेंक देगा? मुझे लगता है कि आपको 'if (s == null)' की जांच करने की आवश्यकता है। –

1

आप फ़ाइल के अंत की जांच के लिए निम्न का उपयोग कर सकते हैं।

public bool isEOF(BufferedReader br) 
{ 
    boolean result; 

    try 
    { 
     result = br.ready(); 
    } 
    catch (IOException e) 
    { 
     System.err.println(e); 
    } 
    return result; 
} 
संबंधित मुद्दे