Thread.sleep() и FileWriter()

Я хочу создать java-программу, которая каждые 5 секунд записывает в файл. Теперь проблема с этим кодом заключается в том, что после «Thread.sleep(5000)» «bw.write(s)» ничего не записывает в файл «b.txt», и он остается пустым. Пожалуйста, кто-нибудь, скажите мне, что происходит.

import java.lang.*;
import java.io.*;
public class Threading{
public static void main(String args[]){
//File f=new File("Rand2.java");
String s="hello";
BufferedWriter bw=null;
FileWriter fw=null;

fw=new FileWriter("b.txt");
bw=new BufferedWriter(fw);


while(true){

    try{
        Thread.sleep(5000);

    }catch(InterruptedException ie){}
    try{    
    bw.write(s);
    //bw.write((int)f.length());
    System.out.println("Hey! I just printed something.");
    }catch(IOException io){System.out.println("IOException");}

}
}

}


person vivek    schedule 15.04.2018    source источник
comment
на самом деле это работает для меня   -  person minizibi    schedule 15.04.2018
comment
Да! оно работает. Спасибо.   -  person vivek    schedule 15.04.2018
comment
@minizibi Я неправильно отредактировал вопрос, добавив код, который заставил его работать. Правка была удалена, она воспроизводима.   -  person xingbin    schedule 15.04.2018


Ответы (1)


Вам нужно позвонить flush() после write(). Он называется BufferedWriter, потому что кэширует данные в буфере, и если вы не очистите его принудительно, он может решить, что еще не время что-либо записывать.

person user3237736    schedule 15.04.2018