在尝试删除文件之前如何检查文件是否已打开
以编程方式?
像这样的东西
if (file is open){
// close it first
}
// delete file
由于某些原因,我认为这不会起作用。
没有标准的 Java 机制来测试您是否已经打开了一个文件。
即使有这样的机制,也很难找到文件的句柄以便关闭它。
即使您可以找到文件句柄,也存在潜在的竞争条件,其中一个线程测试文件并尝试删除它,而第二个线程打开文件句柄。
这些都没有解决以下情况:其他进程已打开文件。
如果您在删除应用程序已打开的文件时遇到问题,那么真正的问题很可能是您的应用程序正在泄漏文件描述符。最好的解决方案是找到并修复泄漏...或者确保使用“try/finally”或新的 Java 7“try with resources”构造关闭所有文件流等。
另一方面,如果文件是由其他进程打开的,那么您也可以try删除文件而不测试它是否打开。如果删除成功则说明成功。否则,检测故障并执行您在检测到文件已打开时会执行的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)