【发布时间】:2015-12-17 21:23:54
【问题描述】:
在使用旧的File API 编码多年后,我终于准备好跳上整个Path/Paths 火车。在大多数情况下,这进展顺利,但是,我在这个特定方面感到困惑:临时文件。
java.nio.Files#createTempFile 上的文档说:
与
File.createTempFile方法一样,此方法只是临时文件工具的一部分。在用作工作文件的情况下,可以使用DELETE_ON_CLOSE选项打开生成的文件,以便在调用适当的关闭方法时删除该文件。或者,可以使用shutdown-hook 或File.deleteOnExit()机制自动删除文件。
我看不到应该在哪里指定 DELETE_ON_CLOSE 选项。使用关闭挂钩非常不方便(除非我想错了)。为了避免同时使用Path 对象和 File 对象,我正在为 Path 对象寻找类似于File.deleteOnExit() 的解决方案,但显然不需要使用Path.toFile().[...].toPath() 一种调用模式。
使用java.nio.Files API 实现“自毁”临时文件的正确方法是什么?
【问题讨论】:
-
path.toFile().deleteOnExit()? -
@assylias 我曾想过这一点,但我认为会有更好的方法。
toFile()方法转换为File对象,它是旧 API 的一部分。这是我现在使用的解决方案,但就像我说的,我试图避免使用旧 API。 -
文件未被弃用,该解决方案没有任何问题!例如,要使用打开选项,您可以使用 Files.newXxx 之一,例如 newBufferedWriter。但这对于您的用例可能并不实用。
标签: java temporary-files