2016-05-10 9 views
-1

Я пытаюсь прочитать файл «ab.txt» и сохранить его содержимое в «Output.txt» Kth раз, поэтому я предполагаю получить содержимое входного файла K раз на выходе файл, но я получаю только один раз, тогда как он печатает на консоли Kth раз.Выход не получается как интенсивно

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"); 
     }  

    } 

ответ

1

Вы используете неправильный конструктор, как вы можете видеть в Javadoc:

PrintStream (String Filename)
...
имя_файла Имя файла использовать в качестве адресата этого потока печати. Если файл существует, то он будет усечен до нуля; в противном случае будет создан новый файл. Выход будет записан в файл и буферизирован.

Вы должны открыть файл, связанный с PrintStream в режиме добавления, если вы не хотите, чтобы содержимое этого файла перезаписан в каждой итерации цикла:

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

С другой стороны, просто открыть файл один раз перед циклом и закрывать его один раз после цикла.

+0

Он должен быть в выходном потоке 'PrintStream output = new PrintStream (" Output.txt ");' not inputstream – Sanjeev

+0

@Sanjeev Вы правы. Меня смутил входной файл. Это исправит. Спасибо – Eran

+0

Нет проблем .. это происходит :) – Sanjeev