2017-02-17 3 views
-1

Ich habe diesen CodePrint Drucken nur die letzte Zeile der Eingabedatei aus

public class program { 
    public static void main(String[] args) { 
     try { 
      String filePath = (args[0]); 
      String strLine; 

      BufferedReader br = new BufferedReader(new FileReader(filePath)); 

      //Read File Line By Line and Print the content on the console 
      while ((strLine = br.readLine()) != null) { 
      //System.out.println (strLine); 
      PrintStream out = new PrintStream(new FileOutputStream(//printing output to user specified text file (command line argument: outputfile) 
        args[1]+".txt")); 
       out.print(strLine); 
      } 
      //close the streams 
      br.close(); 
      } 
      catch(IOException e){ 
      System.err.println("An IOException was caught :"+e.getMessage()); 
      } 

    } 
} 

Wenn ich dieses Programm von der Kommandozeile mit Java-Programm input.txt Ausgabe Inhalt

und wenn Eingabedatei aufrufen waren dies: hallo hallo bye

die Ausgabedatei dieser Druck würde: bye

Es wird nur die letzte Zeile des Ausgangs gedruckt.

wenn statt:

PrintStream out = new PrintStream(new FileOutputStream(//printing output to user specified text file (command line argument: outputfile) 
       args[1]+".txt")); 
      out.print(strLine); 

Ich hatte nur

System.out.println (strLine); 

innerhalb der while-Schleife, dann wäre es richtig, jede Zeile aus der Eingabedatei auf die Konsole zu drucken.

Warum, wenn ich versuche, es in eine andere Datei zu drucken, druckt es nur die letzte Zeile?

Antwort

1

Erstellen Sie keine neue PrintStream in jeder Schleife. die PrintStream vor der while-Schleife Stattdessen erstellen:

PrintStream out = new PrintStream(...); 
while ((strLine = br.readLine()) != null) { 
    out.print(strLine); 
}    
+1

übrigens, wenn Sie die Zeilenumbrüche beibehalten möchten, sollten Sie 'out.println()' verwenden – coolioasjulio

0

Da Sie innerhalb der Schleife auf die gleiche Datei überschreiben. Erstellen Sie den PrintStream außerhalb der Schleife nicht innerhalb der Schleife und es sollte alle Zeilen schreiben!

Verwandte Themen