[英]Log using BufferedReader and ScheduledExecutor
I'm currently studying for my JAVA SE OCP Certification so and playing around with things to learn. 我目前正在为获得JAVA SE OCP认证而学习,并且正在学习一些东西。
I'm currently on IO chapter. 我目前在IO一章。 I'm trying to combine a ScheduledExecutor with a BufferedWriter
我正在尝试将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);
}
I expected to write the LocalTime every second on a new line on my TestFile but this IOException shows up: 我希望每秒钟在我的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) {...}
Try with: 尝试:
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();
}
The true
parameter in the FileWriter
will append each new line to the existing file, instead of creating a new file. FileWriter
的true
参数会将每行添加到现有文件,而不是创建新文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.