我一直在玩一个程序,它将一组文件复制到一个目录中,操纵所述文件,并将它们输出到另一个目录。在其上已经测试/部署的99%的环境中工作正常,但是在一台特定的机器上,我偶尔会(大约每600个文件一次)收到FileNotFoundException: (Access denied)
个例外,这些例外使用相同的测试条件并不可重复投入。在彻底检查了我的所有代码(以及它使用的开源库)之后,我将程序与Process Monitor一起运行,以查看其他进程正在访问这些文件:javaw
和Explorer
是可以预料,但也有一个Windows音频服务随机查询和锁定文件(wtf)。
最终,在捕获此异常时重试是有意义的,但不能保证它不会被锁定。拒绝对SYSTEM用户的访问权限是否有意义?我应该使用文件锁定机制吗?有没有其他人在过去处理过文件访问问题?
附加信息:在删除存储文件的目录的SYSTEM权限后,我能够在我的机器上运行程序没有问题,但我从未在这台PC上遇到过问题。每当异常被捕获时,我也会在等待之后实现重试(再次,从未解雇因为此comp从未出现过问题)。将在本周重新部署以了解它是如何工作的:(在更改权限/允许等待失败后仍有文件访问异常)...
最终的跟进:我一时兴起恢复了这个Stackoverflow帐户并发现了这个问题。如果我记得,最终决议是: +将任何拒绝访问的文件添加到列表中 +在处理所有其他文件结束时处理列表
当然不是万无一失,但这也是在XP上运行的,所以希望现在已经不存在了。