我正在使用Java 7 WatchService监视目录。我不断更改我正在观察的目录。当达到50个目录时,我遇到了以下异常:java.io.IOException:已达到网络BIOS命令限制。我确定在创建新的WatchService之前,我会调用close()关闭每个WatchService。有人知道释放WatchService的正确方法,以避免遇到此限制吗?谢谢,Dave。
我认为你只需要执行close()
方法关闭服务即可。虽然你可能认为已经这样做了,但我怀疑你可能会有遗漏。比如,在发生异常的情况下,你可能没有关闭服务实例。应该像处理其他IO资源一样,使用finally块关闭WatchService实例,例如:
WatchService ws = ...
try {
// use it ...
} finally {
ws.close();
}
或者使用Java 7的“try with resource”语法。
try (WatchService ws = ...) {
// use it ...
}
WatchService
被关闭时,它应立即释放它所持有的任何操作系统级别的资源。
WatchService
实现中的一些 Java 错误。