为什么PrintWriter不能与Thread.sleep()一起使用

时间:2018-11-07 21:31:38

标签: java sleep

PrintWriter起作用(它写入外部文件),直到我添加表示Thread.sleep(100);的行。然后,代码仍然可以正常编译,并继续写入控制台,但不会打印到外部文件。但是我不知道为什么吗?

import java.io.*; 
import java.io.PrintWriter;
import java.io.File;
import javax.swing.*;

public class RecordMouse {
  public static void main(String[] args) throws InterruptedException{

    String line = "";

    // string for filename
    String filename = System.currentTimeMillis() + "out.txt";
    // create file
    File file = new File(filename);
    // create writer
    PrintWriter printWriter = null;

    try
    {
        printWriter = new PrintWriter(file);

        while(true){
            //Thread.sleep(100);
            System.out.println(System.currentTimeMillis() + " hi \n");
            printWriter.println(System.currentTimeMillis() + " hi");
        }

    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }
    finally
    {
        if ( printWriter != null ) 
        {
            printWriter.close();
        }
    }
  }
}

1 个答案:

答案 0 :(得分:3)

sleep给您带来的不同之处在于,它减慢了写入频率,并且需要一段时间才能将写入内容刷新到文件中。通过删除sleep,您将导致写入刷新发生得更早。将睡眠时间更改为较小的值(例如5而不是100),或者稍等一会儿,看文件是否被覆盖。