【发布时间】:2013-10-01 11:54:09
【问题描述】:
Java中java.io.File类中的delete()和deleteOnExit()方法有什么区别?
【问题讨论】:
标签: java file-handling
Java中java.io.File类中的delete()和deleteOnExit()方法有什么区别?
【问题讨论】:
标签: java file-handling
delete() 将立即删除文件,而 deleteOnExit() 不会删除文件,当您调用它时。当程序结束或更准确地说是虚拟机终止时,文件被删除。
如果虚拟机不定期终止,deleteOnExit() 无效。
【讨论】:
File.delete() 方法删除文件,如果删除失败则抛出异常。例如,如果文件不存在,则会引发 NoSuchFileException。 要删除目录,该目录必须为空。 如果文件被成功删除,此方法返回 true,否则返回 false(可能是由于读/写权限)。 当您想/直接删除已知文件时使用此方法。
File.deleteOnExit() 此方法在虚拟机终止时删除抽象路径名定义的文件或目录。文件或目录按照注册时的相反顺序删除。 该方法不返回任何值。 这在程序执行期间生成临时文件时很有用。
【讨论】:
File.deleteOnExit() 文档未引导。我在一个项目中使用它,实际上它通过在垃圾收集器运行时删除文件来工作(如果没有引用文件的对象)。
【讨论】:
Delete() 返回布尔值删除此抽象路径名表示的文件或目录。
deleteOnExit() 返回 void 请求在虚拟机终止时删除此抽象路径名表示的文件或目录。
【讨论】: