当用户上传图片后,我必须将其存储几分钟,直到用户确认并将其存储在数据库中。
因此,我想创建一个临时文件并使用它来显示预览。
但我必须确保如果用户不再交互,文件将在一段时间后被删除。
我找到了这篇关于临时文件如何自动删除的文章https://softwarecave.org/2014/02/05/create-temporary-files-and-directories-using-java-nio2/
但是,如果我理解正确,deleteOnExit 和 ShutdownHook 将在虚拟机关闭后调用,因此,如果我的应用程序在线上运行很长时间,并且这些文件永远不会被删除,DELETE_ON_EXIT 选项将在调用 close 方法时删除文件,因此如果我从未调用 close 方法,因为用户没有执行任何操作,则该文件也永远不会被删除。是这样吗?
那么...是否有任何方法可以保证文件在一段时间后自动删除?
我考虑创建一个带有 deleteOnExit 和 DELETE_ON_CLOSE 选项的 File,并添加到一个带有“超时”的线程中,在超时后检查文件是否仍存在并进行删除,但我不知道是否存在更好的方法。
谢谢。
更新
基于最佳答案,我使用 Kotlin 开发了一个项目,将此行为添加到 java.util.File
中。
https://github.com/vinicius-rob-cunha/kotlin-auto-delete-file
java.util.File
中。https://github.com/vinicius-rob-cunha/kotlin-auto-delete-file - Vinicius Cunha