2016-05-10 9 views
-1

Ich versuche, die Datei "ab.txt" zu lesen und speichern Sie ihren Inhalt in "Output.txt" K-mal, so dass ich nehme, den Inhalt der Eingabedatei K mal in der Ausgabe erhalten Datei, aber ich bekomme nur einmal, während es auf Konsole Kth Zeiten druckt.Ausgabe nicht als intent

import java.io.*; 
    import java.util.Scanner; 

    class PrintStreamTest1 
    { 
     public static void main(String... l)throws IOException 
     { 
     int k=0; 
     long avgTime=0; 

     while(k<100) 
     { 
      long startTime=System.nanoTime(); 
      String s; 
      Scanner fin=new Scanner(new BufferedInputStream(new FileInputStream("ab.txt"))); 
      PrintStream output=new PrintStream("Output.txt"); 
      while(fin.hasNextLine()) 
      { 
      s=fin.nextLine(); 
      System.out.println(s); 
      output.print(s+"\n"); 
      } 

      avgTime=avgTime+((System.nanoTime()-startTime)/10000000); 
      fin.close(); 
      output.close(); 
      k++; 
     } 

     System.out.println("\n "+ avgTime+"ms"); 
     }  

    } 

Antwort

1

Sie verwenden den falschen Konstruktor, wie Sie in der Javadoc sehen:

Print (String filename)
...
filename Der Name der Datei Verwenden Sie als Ziel dieses Druckdatenstroms. Wenn die Datei existiert, wird sie auf 0 zerkleinert; Andernfalls wird eine neue Datei erstellt. Die Ausgabe wird in die Datei geschrieben und gepuffert.

Sie sollten die Datei mit dem PrintStream in Zufügen-Modus zugeordnet öffnen, wenn Sie in jeder Iteration der Schleife überschrieben nicht den Inhalt der Datei wollen:

PrintStream output = new PrintStream(new FileOutputStream("Output.txt",true)); 

Alternativ öffnen Sie einfach die Datei einmal vor der Schleife und schließe es einmal nach der Schleife.

+0

Es sollte auf Ausgabestrom sein 'PrintStream output = new PrintStream ("Output.txt"); 'nicht inputstream – Sanjeev

+0

@Sanjeev Sie sind richtig. Ich wurde von der Eingabedatei verwirrt. Wird das beheben. Danke – Eran

+0

Keine Probleme .. es passiert :) – Sanjeev