DeleteOnExit jvm shutdown

Jos*_*eph 2 java spring jvm

我目前有一个tomcat webapp,需要在JVM关闭时删除文件.我创建了一个自定义ContextLoaderListener来处理contextDestroyed事件.在这里我在适当的文件上调用deleteOnExit.但是,自从jdk 1.6.0_14以来我无法删除OnExit.谷歌搜索表明有一些预期的变化,但我没有看到解决这个问题.有人有主意吗?

下面的代码不起作用.

for(File f : myFileList)
try{
    f.deleteOnExit()
} finally {
    f.delete()
}
Run Code Online (Sandbox Code Playgroud)

jto*_*ron 5

作为有序关机过程的一部分,我不认为你会对清理文件的结果感到满意.例如,如果您的进程崩溃或使用"kill -9"停止,那么您的清理代码将无法运行.

更可靠的方法是在启动/初始化期间设置环境.如果在特定目录中隔离此应用程序的文件,则这很容易:只需清空相关目录即可.

"空目录"调用所属的确切位置取决于您的应用程序.例如,如果编写了servlet,则使用init方法.或者,如果您使用Spring,那么它们会提供各种初始化挂钩,例如init-method.

  • 在初始化写入文件的资源时,我会在启动时清空目录.连接启动将非常可靠,挂起关闭本质上是不可靠的. (2认同)