Frage

I BufferedReader und Printwriter bin mit durch jede Zeile einer Eingabedatei zu gehen, eine Änderung an einige Linien, und das Ergebnis auszugeben. Wenn eine Zeile eine Änderung nicht durchlaufen, wird es gedruckt nur in Bezug auf die Ausgabedatei ist. aber aus irgendeinem Grund, endet der Prozess vorzeitig. Der Code sieht etwa so aus:

BufferedReader in = new BufferedReader(new FileReader("in.txt"));
FileOutputStream out = new FileOutputStream("out.txt");
PrintWriter p = new PrintWriter(out);
String line = in.readLine();

while(line!=null)
{
   if(line is special)
      do edits and p.println(edited_line);
   else
      p.println(line);

   line = in.readLine();
}

Doch aus irgendeinem seltsamen Grund, dieser Prozess vorzeitig beendet (eigentlich eine Hälfte einer Zeile ausdruckt) in Richtung zum Ende meiner Eingabedatei. Offensichtliche Grund dafür? Die while-Schleife ist eindeutig durch ein Null beendet wird. Und es ist gegen Ende meiner 250k + Linie txt-Datei. Dank!

War es hilfreich?

Lösung

Wo tun Sie bündig / schließen Sie Ihren Printwriter oder Fileoutputstream? Wenn das Programm beendet und dies nicht geschehen ist, nicht alle Ihre Ergebnisse werden ausgeschrieben.

Sie müssen out.close() (möglicherweise ein p.flush() auch?) Am Ende des Prozesses die Datei Ausgabestrom

schließen

Andere Tipps

Versuchen Sie, eine p.flush () nach der Schleife.

Printwriter nicht aktiviert hat autoflushing, so seine wahrscheinlich, dass das letzte Bit der Datei gespült wird, nicht, bevor das Programm beendet wird.

ein Hinzufügen p.flush() nach der while-Schleife sollte es tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top