【问题标题】:Output not getting as intened [duplicate]输出没有达到预期[重复]
【发布时间】:2016-09-05 03:54:30
【问题描述】:

我正在尝试读取文件“ab.txt”并将其内容保存在“Output.txt”第 K 次,所以我想在输出文件中获取输入文件 K 次的内容,但是我' m 在控制台上打印第 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");
       }    

    }

【问题讨论】:

    标签: java printstream


    【解决方案1】:

    正如您在 Javadoc 中看到的那样,您使用了错误的构造函数:

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

    如果您不希望在循环的每次迭代中覆盖该文件的内容,您应该以附加模式打开与 PrintStream 关联的文件:

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

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

    【讨论】:

    • 它应该在输出流PrintStream output=new PrintStream("Output.txt");而不是输入流上
    • @Sanjeev 你是对的。我对输入文件感到困惑。会解决的。谢谢
    • 没问题..它发生了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多