2010-12-21 101 views
0

我正在开发一个便携式java应用程序,用于在用户的PC上运行时生成一些文件(windows xp)。现在,我想要的是在java程序退出后删除这些临时文件。显然,java的文件删除机制不可信任。即使我将文件标记为在退出时(file.deleteOnExit())被删除,大部分时间都不会被删除。我使用包装器(java2exe)将其作为可执行文件运行。任何建议或解决方案都欢迎?如何删除由java程序生成的临时文件(清理)?

感谢, 深

回答

7

我怀疑那deleteOnExit失败的原因是因为你的应用程序仍具有文件时,打开应用程序退出。这将导致删除在Windows上由于延迟的文件锁定而失败。

解决方法是在退出之前关闭临时文件的所有流。

+0

是的,但事情是用户使用系统默认文件应用程序(例如PDF文件的acrobat,html文件的IE)打开这些文件,并且如果文件在应用程序退出时打开,则无法关闭文件。有什么圆滑的解决方案来解决这个问题吗? – 2010-12-24 05:27:55

+0

如果这些文件是由某个外部应用程序打开的,则说明存在问题。首先,Java应用程序可能不应该*尝试*删除它们,直到外部应用程序退出。 – 2010-12-24 05:31:59

相关问题