输出没有按照计划进行

时间:2016-05-10 09:10:12

标签: java printstream

我正在尝试读取文件“ab.txt”并将其内容保存在“Output.txt”第K次,所以我想在输出文件中获取输入文件的内容K次,但是我只有一次,而它在控制台第K次打印。

 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 个答案:

答案 0 :(得分:1)

您正在使用Javadoc中的错误构造函数:

  

PrintStream(String fileName)
  ...
   fileName 要用作此打印流目标的文件的名称。 如果文件存在,那么它将被截断为零大小;否则,将创建一个新文件。输出将被写入文件并被缓冲。

如果您不想在循环的每次迭代中覆盖该文件的内容,则应该在追加模式下打开与PrintStream相关联的文件:

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

或者,只需在循环之前打开文件一次,然后在循环之后关闭它一次。