私は ScheduledThreadPoolExecutor を使用して fileIntervalInSeconds 秒ごとにファイルを作成しています:
executorService = new ScheduledThreadPoolExecutor(1);
executorService.scheduleAtFixedRate(new Runnable()
{
@Override
public void run()
{
File file = new File(fileName);
if (file.exists())
{
Log.debug("creating new file");
openFileWriter(file);
}
}
}, fileIntervalInSeconds, fileIntervalInSeconds, TimeUnit.SECONDS);
}
private void openFileWriter() throws FileSystemNotificationException
{
// 1 - close exist writer
writer.close();
// 2 - rename to backup file name
...
// 3 - create new file
FileWriter writerFile = new FileWriter(fileName, true);
writer = new PrintWriter(writerFile);
}
そして、私は常に警告メッセージをファイルに書き込んでいます:
private synchronized void writeLine(String line) throws InterruptedException
{
writer.println(line);
}
私の問題は次のとおりです。
- 閉じていないときにライターを使用していることを確認するにはどうすればよいですか? (ライター.close())
- 書き込みを開始する前に、ScheduledThreadPoolExecutor がファイルの作成を完了するのを待つにはどうすればよいですか