我需要擦除我的程序中的文件。我的解決辦法是有一個erase()
方法,將做到這一點,像這樣:這裏如何在避免錯誤的同時打開,寫入和保存文件?
public static void erase(String string) {
FileWriter fw = null;
try {
fw = new FileWriter(string);
fw.write(new String());
} catch (IOException ie) {
e.printStackTrace();
} finally {
fw.flush();
fw.close();
}
}
幾個問題:
如果
fw
不正確初始化(不管出於什麼原因,丟失的文件,無效persmissions等),然後當我嘗試在finally
塊中關閉它時,會出現NullPointerException。如果我沒有finally塊,那麼我可能會拋出一個NullPointerException因爲上面的原因。
如果我關閉了try塊內的文件,那麼如果文件正常打開但沒有正確寫入,我可能會泄漏資源。
我忽略了什麼其他問題,我該如何硬化這種方法?
RandomAccessFile.setLength(0)可能更具可讀性(並且可能更正確,因爲字符編碼可能包含一個或兩個BOM字符)。 –