java overflow_如何处理JAVA WatchService Overflow事件?

我想使用JAVA检测文件的创建和修改.我正在使用JDK 7提供的WatchService API.

因此,当在给定实例上创建多个文件时,监视服务可以处理一个级别,然后生成和OVERFLOW事件.

示例代码部分如下所示.

当有和溢出事件被抛出以检测所有文件的创建时,最适合处理这种情况的方法是什么?

for (WatchEvent> event : key.pollEvents()) {

WatchEvent.Kind kind = event.kind();

// TBD - provide example of how OVERFLOW event is handled

if (kind == OVERFLOW) {

System.err.println("OVERFLOW !");

continue;

}

}

最佳答案 希望您已经找到了解决方案.通常的想法是处理新创建的文件并将处理过的文件移动到不同的目录.

有两种可能的方法可以解决这个问题:

>防止发生溢出

>如果仍然发生,请处理溢出

防止发生溢出

我们的想法是快速清除操作系统缓冲区并使用事件信息填充队列,然后让多个线程处理队列中的事件.

如果仍然发生,请处理溢出

如果OVERFLOW仍然出现,

>停止听事件

>清除队列

>调用目录上的listFiles()

>再次开始听事件

>将列出的文件插入队列中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值