24

Java 中java.io.File类中的delete()deleteOnExit()方法有什么区别?

4

4 回答 4

44

delete() 将立即删除文件,而 deleteOnExit() 不会删除文件,当您调用它时。相反,当程序结束或更准确地说虚拟机终止时,文件被删除。

如果虚拟机不定期终止,deleteOnExit() 无效。

于 2016-03-30T06:37:46.830 回答
11

File.delete() 方法删除文件,如果删除失败则抛出异常。例如,如果文件不存在,则会引发 NoSuchFileException。要删除目录,该目录必须为空。如果文件被成功删除,此方法返回 true,否则返回 false(可能是由于读/写权限)。 当您想/直接删除已知文件时使用此方法。

File.deleteOnExit() 该方法在虚拟机终止时删除抽象路径名定义的文件或目录。文件或目录按照注册时的相反顺序删除。该方法不返回任何值。 这在程序执行期间生成临时文件时很有用。

于 2015-04-20T13:51:49.313 回答
2

File.deleteOnExit() 文档缺少领先。我在一个项目中使用它,实际上它通过在垃圾收集器运行时删除文件来工作(如果没有对象引用该文件)。

于 2018-01-04T21:34:14.580 回答
1

Delete() returns boolean Deletes the file or directory denoted by this abstract pathname.

deleteOnExit() returns void Requests that the file or directory denoted by this abstract pathname be deleted when the virtual machine terminates.

于 2013-09-25T18:41:27.920 回答