我目前有一个tomcat Webapp,需要在关闭JVM时删除文件。我创建了一个自定义ContextLoaderListener来处理contextDestroyed事件。在这里,我在适当的文件上调用deleteOnExit。但是,自jdk 1.6.0_14起,我无法删除deleteOnExit。谷歌搜索表明存在某种可以预期的变化,但是我还没有看到解决此问题的方法。有人有想法么?

下面的代码不起作用。

for(File f : myFileList)
try{
    f.deleteOnExit()
} finally {
    f.delete()
}

最佳答案

我不认为您会对顺序关闭过程中清理文件的结果感到满意。例如,如果您的进程崩溃或被“ kill -9”停止,则清理代码将不会运行。

一种更可靠的方法是在启动/初始化期间设置环境。如果将此应用程序的文件分隔在特定目录中,那么这很容易:只需考虑empty the directory即可。

“空目录”调用的确切位置取决于您的应用程序。例如,如果您编写了一个servlet,则使用the init method。或者,如果您使用Spring,则它们提供各种初始化挂钩,例如init-method

08-05 18:24