我的程序(服務器)有一個記錄器,它是主服務器類的一個屬性,它被所有其他類用來記錄錯誤。程序終止時是否有辦法刪除.lck文件?我的代碼:Java:刪除.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());
}
}
是有辦法,以確保即使在過程中的寫入時終止該文件保存沒有問題?
我不確定我瞭解什麼創建了.lck。 – 2011-06-08 01:33:51
* nix上的一個提示是,目錄創建是一個原子過程(即inode存在或不存在,通用),因此您使用鎖定目錄而不是鎖定文件,因爲它更安全。回答你的問題之一:使你的Logger類可以關閉,並在程序退出時將其關閉,就像main方法中的finally塊一樣,例如。沒有辦法確保程序中的任何內容,我們嘗試,抓住並最終確定。嘆。 – corlettk 2011-06-08 01:37:05
在一個問題中不要問兩個不相關的問題。我建議您編輯問題以刪除第二個問題...併爲其創建一個新問題。 – 2011-06-08 04:58:14