我只是想知道在应用程序关闭时是否可以删除目录?
应用程序关闭时有一种简单的方法可以做某事吗?
目前我的应用程序在运行时下载类文件,所以我真正想要的是从客户端系统中删除它们.
到目前为止我已经尝试过了
File directory = new File("macros/bin/");
directory.deleteOnExit();
Run Code Online (Sandbox Code Playgroud)
以及下载的启动文件的运行时删除(显然无法查看,因为它需要它们才能运行).
小智 20
你可以试试这个:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
/* Delete your file here. */
}
});
Run Code Online (Sandbox Code Playgroud)
很大程度上取决于你的程序如何结束.
您应该使用Apache Commons IO执行以下操作:
Runtime.getRuntime().addShutdownHook(new Thread(() -> FileUtils.deleteQuietly(fileOrDir)));
Run Code Online (Sandbox Code Playgroud)
注意:FileUtils.forceDeleteOnExit实现存在缺陷:它在注册目录期间注册要删除的文件,因此如果稍后添加文件将无法删除该目录.
只是为了记录,javadoc说directory.deleteOnExit()应该工作......该方法应该适用于目录.但是,方法可能会失败,因为在尝试删除目录时,目录不为空......操作系统通常不会让您删除非空目录.
解决方案是调用deleteOnExit()用户下载的文件.你必须在通话后这样做directory.deleteOnExit().请参阅javadoc了解原因.
话虽如此,显式关闭钩子是一种更强大的方法.
| 归档时间: |
|
| 查看次数: |
12075 次 |
| 最近记录: |