Моя программа (сервер) имеет регистратор, он является атрибутом класса основного сервера и используется всеми другими классами для регистрации ошибки.Есть ли способ удалить файлы .lck после завершения программы?Мой код:
private static Logger log = Logger.getLogger("ServerLog");
public Server() {
// initialize variables
try {
FileHandler fh = new FileHandler(
"src/main/resources/log/ServerLog.log", true);
log.addHandler(fh);
log.setLevel(Level.ALL);
fh.setFormatter(new SimpleFormatter());
} catch (SecurityException e) {
getLog().log(Level.WARNING, e.getMessage());
} catch (IOException e) {
getLog().log(Level.WARNING, e.getMessage());
}
}
И он вызывается другими классами для регистрации ошибок.
Второй вопрос: когда я пишу в файл, например:
public final void saveRanking() {
try {
FileOutputStream fos = new FileOutputStream(
"src/main/resources/database/dataRanking.out");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(getRanking());
oos.flush();
oos.close();
fos.close();
} catch (FileNotFoundException e) {
getLog().log(Level.SEVERE, e.getMessage());
} catch (IOException e) {
getLog().log(Level.SEVERE, e.getMessage());
}
}
Есть ли способ гарантировать, что файл будет сохранен без проблем, даже если процесс завершается во время записи?