【发布时间】:2015-01-07 17:21:00
【问题描述】:
我正在寻找一种在 Java 中创建临时文件的安全方法。安全,我的意思是:
- 名称应该是唯一的,即使在潜在的竞争条件下(例如,另一个线程同时调用相同的函数,或者另一个进程同时运行此代码)
- 文件应该是私有的,即使在潜在的竞争条件下(例如,另一个用户试图以高速率 chmod 文件)
- 我可以告诉它删除文件,而无需我进行一般删除操作,并且有删除错误文件的风险
- 理想情况下,应该确保文件被删除,即使在我有机会之前抛出异常
- 文件应该默认到一个正常的位置(例如,JVM 指定的 tmp 目录,默认到系统临时目录)
【问题讨论】:
-
使用
File f = File.createTempFile(prefix, extension)。它将被放置在临时目录中。使用f.deleteOnExit(),它会在退出时自动删除。 -
Delete on Exit 不会删除文件,如果 vm 异常退出。
标签: java temporary-files