Search code examples
javaspring-bootfile-iobufferedwriterspring-scheduled

Write to a specific file every 10 secs


I am trying to use spring boot's @Scheduled to print current system time to a specific text file every 10 seconds.

I have managed to create something like below:

@Scheduled(fixedRate = 10000) // 10 seconds
public void writeToMyFile() {
    try {
        BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\temp\\envVarFile.txt", true));
        SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
        try {
            writer.append(formatter.format(System.currentTimeMillis()));
        }
        catch(IOException e){
            e.printStackTrace()
        }
        writer.close(); 
    }
    catch(Exception e) {
        e.printStackTrace()
    }
}

I don't know if I am creating a file new file or I am writing on the initially created "envVarFile" file.

I would be glad if someone could help.

!Important!: The solution of @Rakesh works but when applied to the code under the circumstances of the envVarFile.txt being present under the directory of temp which is inside C:


Solution

  • Please use below

      File yourfile = new File(filename);
            if(yourfile.exists()){
                writer = Files.newBufferedWriter(Paths.get(filename), StandardCharsets.UTF_8,StandardOpenOption.APPEND);
            }else{
                writer = Files.newBufferedWriter(Paths.get(filename), StandardCharsets.UTF_8,StandardOpenOption.CREATE_NEW);
            }