-1

ファイル「ab.txt」を読み取ろうとして、その内容を「Output.txt」に K 回保存しようとしているので、入力ファイルの内容を出力ファイルで K 回取得することになっていますが、取得しているのはコンソールでK回印刷しているのに対し、1回。

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

    }
4

1 に答える 1

1

Javadoc でわかるように、間違ったコンストラクターを使用しています。

PrintStream(String fileName)
...
fileNameこの印刷ストリームの宛先として使用するファイルの名前。ファイルが存在する場合は、サイズがゼロに切り捨てられます。そうしないと、新しいファイルが作成されます。出力はファイルに書き込まれ、バッファリングされます。

PrintStreamループの各反復でそのファイルの内容を上書きしたくない場合は、in append モードに関連付けられたファイルを開く必要があります。

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

または、ループの前にファイルを 1 回開き、ループの後にファイルを 1 回閉じます。

于 2016-05-10T09:12:09.600 に答える