簡體   English   中英

使用BufferedReader和ScheduledExecutor進行日志

[英]Log using BufferedReader and ScheduledExecutor

我目前正在為獲得JAVA SE OCP認證而學習,並且正在學習一些東西。

我目前在IO一章。 我正在嘗試將ScheduledExecutor與BufferedWriter結合使用

ScheduledExecutorService service = null;
try (BufferedWriter bw = new BufferedWriter(new FileWriter(testFile))) {
    service = Executors.newSingleThreadScheduledExecutor();
    service.scheduleAtFixedRate(() -> {
        try {
            bw.write("Curr Time: " + LocalTime.now());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }, 1, 1, TimeUnit.SECONDS);
}

我希望每秒鍾在我的TestFile的新行上寫入LocalTime,但是會出現此IOException:

java.io.IOException: Stream closed
at java.io.BufferedWriter.ensureOpen(BufferedWriter.java:116)
at java.io.BufferedWriter.write(BufferedWriter.java:221)
at java.io.Writer.write(Writer.java:157)
at Worksheet.lambda$main$0(Worksheet.java:56)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) {...}

嘗試:

ScheduledExecutorService service = null;
    service = Executors.newSingleThreadScheduledExecutor();
    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(testFile, true));
        service.scheduleAtFixedRate(() -> {
            try {
                bw.write("Curr Time: " + LocalTime.now() + "\n");
                bw.flush();
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }, 1, 1, TimeUnit.SECONDS);

    } catch (IOException ioe) {
        ioe.printStackTrace();
    }

FileWritertrue參數會將每行添加到現有文件,而不是創建新文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM