删除文件的deleteOnExit和delete方法

496 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第二十六天,点击查看活动详情


进行word文件操作时,最后一步需要将生成好的word文件删掉,删除文件时发现有两个删除方法,下面列举出来:

一种是deleteOnExit

//删除word文件
File file = new File("D://test.word");
if(file.exists()) {
    file.deleteOnExit();
}

刚开始以为deleteOnExit是当文件存在时就删除,不存在就不进行操作,后来发现文件一直都没有删掉,进一步了解,才发现理解错了,deleteOnExit调用方法结束并不会直接删除文件,而是在虚拟机终止的时候才会执行删除操作,并且如果是删除目录,则需要保证目录下方没有文件存在,如果有文件,则会删除失败。

一种是delete方法

//删除word文件
File file = new File("D://test.word");
if(file.exists()) {
    file.delete();
}

该方法在调用完成之后就会立刻执行文件的删除操作,同样,如果是删除目录,也需要保证目录下方没有文件存在,如果有文件,则会删除失败,并返回false,删除成功,则返回true。

发现还是不能按照方法的名字来理解方法,还是要了解方法之后再进行调用,之后如果有创建临时文件并且在其他地方调用到临时文件的时候再调用这个方法,并且了解发现deleteOnExit这个方法如果删除失败也不会有返回信息和异常信息,就不好判断该文件是否删除成功,这个也是需要注意的地方,避免调用方法后文件没有正常删除,后续还需要进行手动删除。并且文件流如果没有关闭,该方法删除文件也是会失败的,需要注意文件流的关闭。