File删除文件delete和deleteOnExit的区别
File中提供了两个删除文件的方法,即delte()和deleteOnExit()。他们之间的区别在哪里呢?
让我们先看一下,这两个方法对应的源码:
delete:
public boolean delete() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkDelete(path);
}
if (isInvalid()) {
return false;
}
return fs.delete(this);
}
deleteOnExit:
public void deleteOnExit() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkDelete(path);
}
if (isInvalid()) {
return;
}
DeleteOnExitHook.add(path);
}
我们发现
delete: 即刻删除此路径下的文件。
deleteOnExit:在jvm退出时才会执行删除此路径下的文件。