java - DeleteOnExit jvm 关闭

标签 java spring jvm

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

下面的代码不起作用。

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

最佳答案

我认为您不会对作为有序关闭过程的一部分清理文件的结果感到满意。例如,如果您的进程崩溃或通过“kill -9”停止,那么您的清理代码将不会运行。

更可靠的方法是在启动/初始化期间设置环境。如果您将此应用程序的文件隔离在特定目录中,那么这很简单:只需 empty the directory有问题。

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

关于java - DeleteOnExit jvm 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6509419/

相关文章:

Java 枚举出错?

java - Spring Security hasPermission for Collection<Object>

java - 使用 Oracle JVM 将 blob 作为参数传递给 java 方法

java - 我在网页中有一个表格,其中有一个如图所示的界面。通过匹配接口(interface)名称,我需要单击箭头

java - 如何在java中排序后列出数字

java - 从 spring 3.1.2 到 spring 4 的迁移问题

java - JVM 不会在 OnOutOfMemoryError 上被杀死

Java 应用程序在 Mac 和 Windows 上运行自己的 JVM

java - 有效地从 ArrayList 中获取子列表

java - 带有自定义 header 和参数的 RestTemplate GET 请求导致 400(空)