Почему PrintWriter не работает с Thread.sleep () - PullRequest
0 голосов
/ 08 ноября 2018

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 голосов
/ 08 ноября 2018

Разница sleep в вашем случае заключается в том, что она замедляет частоту записи, и это займет некоторое время, пока записи не будут сброшены в файл. Удаляя sleep, вы вызываете сброс записи намного раньше. Измените время ожидания на что-то меньшее (например, 5 вместо 100) или подождите немного дольше и увидите, что файл перезаписывается.

...