2012-04-02 2 views
0

Ich habe versucht, den Inhalt in einer Datei mit PufferedReader zu puffern. In dem Prozess gab ich eine falsche Einschränkung in dem folgenden Programm while((line = in.readLine()) != "\n"), die mir eine unerwünschte Ausgabe gibt.Warum wird bei der Verwendung von Streams die vorherige Ausgabe wiedergegeben?

Ich korrigierte später, als while((line = in.readLine()) != "null"), die in der Lage sein sollte, den Inhalt in der Datei (neue Datei) anzuzeigen, aber es wird weiterhin die gleiche falsche Ausgabe wieder angezeigt.

import java.io.*; 

    public class ReaderTest { 

     public static void main(String[] args) throws IOException{ 

        BufferedReader in = new BufferedReader(new FileReader("/home/a1340/new file")); 

        String line=""; 
        while((line = in.readLine()) != "\n"){ 
        System.out.println(line); 
        } 
        in.close(); 

        } 
       } 

     import java.io.*; 

     public class ReaderTest { 

      public static void main(String[] args) throws IOException{ 

         BufferedReader in = new BufferedReader(new FileReader("/home/a1340/new file")); 

         String line=""; 
         while((line = in.readLine()) != "null"){ 
         System.out.println(line); 
         } 
         in.close(); 

         } 
        } 
+1

entfernen Sie die Anführungszeichen um 'null' –

+0

oh ja .. keine Zitate .. das Problem besteht noch. Ich denke, der Puffer muss gespült werden. ?? Bin aber verwirrt wie ?? – maryJane

+0

keine Notwendigkeit zu spülen Mate. Ich benutze das die ganze Zeit. Kann sein, Problem ist mit 'FileReader', versuchen Sie' FileInputStream' stattdessen. Unten ist meine Antwort, versuchen Sie es –

Antwort

5

readLine() returns null, wenn das Ende des Streams erreicht, so müssen Sie null zu vergleichen, nicht "null":

while((line = in.readLine()) != null) 
+0

sry .. ich meinte null nicht "null" .. @Binyamin Sharet – maryJane

+0

versuchen Sie sauber und bauen Sie Ihr Projekt wieder auf. – MByD

0

Verwenden null ohne Anführungszeichen

while((line = in.readLine()) != null){ 
System.out.println(line); 
} 
0

null ist kein String Geben Sie in Java ein

Sie müssen null verwenden, wie es

while((line = in.readLine()) != null) 
{ 
    System.out.println(line); 
} 

ist Mit FileInputStream

BufferedReader in = new BufferedReader(new FileInputStream(new File("filename"))); 

while((line = in.readLine()) != null) 
{ 
    System.out.println(line); 
} 
0

Zuerst wird, wie schon andere gesagt haben, müssen Sie null zu vergleichen.

Aber auch, sollten Sie .equals(...) verwenden, um String Objekte zu vergleichen, nicht der Ungleichheitsoperator !=.

I.e. schreiben diese

if ("\n".equals(line)) { ... } 

das nicht:

if ("\n" == line) { ... } 

Auch die Java-Plattform die native Leitungsabschlusssequenz für das zugrunde liegende Betriebssystem Via System.getProperty("line.separator");

Einige Plattformen verwenden \r\n

Schließlich weiß, Ich schlage "literal".equals(variable) statt variable.equals("literal") vor, weil das erste für Arbeit wennfunktioniertist null.

Verwandte Themen