2013-07-16 13 views
7

Überprüfung Wenn ich so etwas in meinem Code habe:Linien mit BufferedReader Lesen und für das Ende der Datei

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

Wie kann ich einen Absturz zu vermeiden, wenn die nächste Zeile das Ende der Datei ist? (d. h. Null)

Ich muss die nächste Zeile lesen, weil es dort etwas gibt, mit dem ich mich befassen muss, aber wenn es nicht ist, stürzt der Code einfach ab.

Wenn da etwas ist dann ist alles in Ordnung, aber ich kann nicht garantiert werden, dass da etwas ist. So

, wenn ich so etwas wie: (Pseudocode):

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

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

Das Problem, das ich mit so etwas wie dieses haben, ist, dass, wenn ich die Linie gegen null zu überprüfen, es bereits in der nächsten Zeile bewegt, Wie kann ich es noch einmal überprüfen?

Ich habe keinen Weg gefunden, dies zu tun - irgendwelche Vorschläge wären eine große Hilfe.

+1

Wirklich wünschen, dass die Menschen einen Grund verlassen würden, wenn sie abstimmen. Ein Down-Vote soll anzeigen, dass mit einer Frage etwas nicht in Ordnung ist. Vielleicht kann es umformatiert werden. Down-Voting, ohne einen Grund zu geben, warum der Downvote geworfen wurde, hilft niemandem – Zippy

Antwort

23

Am ... Sie können einfach eine solche Konstruktion verwendet werden:

String line; 

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

Wie Sie zuerst beantwortet haben, lösche ich meinen :) – Azad

2

Wenn Sie eine Schleife durch alle Linien wollen verwenden, dass:

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

Man könnte es absichtlich den Fehler in Ihrem Schleife werfen haben . d. h .:

was alle anderen traurig haben, sollte auch funktionieren.

+2

Das ist möglicherweise der schlechteste Weg, dies zu tun ... – Raven

+0

@Raven Warum ist es ist so schlimm? Ich sehe nichts falsch daran ... –

+0

Würde dies tatsächlich "NullPointerException" werfen? Ich denke, du musst "if (s == null)" überprüfen. –

1

Sie können Folgendes verwenden, um nach dem Dateiende zu suchen.

public bool isEOF(BufferedReader br) 
{ 
    boolean result; 

    try 
    { 
     result = br.ready(); 
    } 
    catch (IOException e) 
    { 
     System.err.println(e); 
    } 
    return result; 
}