我在使用Java 7 WatchService API跟踪目录中文件内容的应用程序中遇到了一个反复出现的问题。当底层文件系统在文件上触发修改事件时,我想立即计算其SHA-256。
但经常出现另一个进程打开了该文件(例如Word),从而持有独占锁,防止我的应用程序进行任何读/写操作。如果针对已打开的文件创建任何Stream/Channel,则会抛出FileNotFoundException或nio API的FileSystemException,并显示以下消息:
“因为它正在被另一个进程使用,所以无法访问该文件”
我不能提供一种解决方案,可以在文件实际上不存在于fs时掩盖“真正”的FileNotFoundException以检测这种情况。
我想通过File.exists来检查文件的存在性,然后如果我打开一个流时抛出FileNotFoundException,我就能推断出该文件已被锁定。欢迎提出任何意见!
谢谢!
但经常出现另一个进程打开了该文件(例如Word),从而持有独占锁,防止我的应用程序进行任何读/写操作。如果针对已打开的文件创建任何Stream/Channel,则会抛出FileNotFoundException或nio API的FileSystemException,并显示以下消息:
“因为它正在被另一个进程使用,所以无法访问该文件”
我不能提供一种解决方案,可以在文件实际上不存在于fs时掩盖“真正”的FileNotFoundException以检测这种情况。
我想通过File.exists来检查文件的存在性,然后如果我打开一个流时抛出FileNotFoundException,我就能推断出该文件已被锁定。欢迎提出任何意见!
谢谢!