このファイル消して大丈夫だったかな・・・?
消すと動かなくなったりしないかな・・・??
時間が経つとファイルを消すだけでも不安になったりします(; ・`д・´)
面倒でも、使い終わったら不要なファイルは消すようにしましょう♪
ファイルを削除するサンプル
2つのファイルを消します。1つはその場で消して、1つはアプリケーションが終了する際に削除を行います。
また、アプリケーションをすぐに終了させないように、20秒待っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import java.io.File; public class FileDelete2Test { public static void main(String[] args) { String filePath1 = "c:\\test\\test1.txt"; String filePath2 = "c:\\test\\test2.txt"; delete1(filePath1); delete2(filePath2); try { //20秒待つ Thread.sleep(20 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } public static void delete1(String filePath) { File file = new File(filePath); file.deleteOnExit(); } public static void delete2(String filePath) { File file = new File(filePath); file.delete(); } } |
実行結果
test1.txtは、アプリケーションが終了するタイミングで削除されます。(≒約20秒後に消える)
test2.txtは、アプリケーションが終了する前にすぐ削除されます。
サンプルの解説
File#delete()を使うと、ファイルを削除することができます。
こちらは、File#delete()を呼び出した瞬間にファイルを削除します。
File#deleteOnExit()も同様に、ファイルを削除することができます。
こちらの場合はアプリケーションを終了する際に、ファイルを削除します。
主に、アプリケーションで利用する一時的なワークファイルを消すために用意されています。
昔は、JavaのバグによりFile#deleteOnExit()を使ってもWindowsではうまく削除されないことがありました。
現在では、このバグは解消しているため、アプリケーションを終了する際に、正しく削除することができます。
ただし、当然ですが誰かにファイルが掴まれていたり、異常終了すれば消えません。また、削除の成功・失敗に関わらずアプリケーションは終了します。
ですので、File#deleteOnExit()は、あまり使わない方が良いかもしれません。