java-WatchService如果目录中未发生任何事件,api中是否有任何超时构建

本文探讨了如何在Java的WatchService中设置超时,特别是在等待目录事件时。作者遇到的问题是希望在没有事件发生时,WatchService能在两分钟后停止等待。现有的解决方案是通过在循环中管理超时来实现这一目标,确保在达到指定时间后退出等待。
摘要由CSDN通过智能技术生成

我想问你一个关于WatchService的问题.因此,当目录中出现我要重命名特定文件的代码.但是我想将WatchService的超时设置为2分钟(如果目录内没有任何反应).

 

但是从我的读物来看.有超时,但仅在启动监视目录之前处于睡眠状态.

因此,代码如下所示:

 

try {
            WatchService watchService = FileSystems.getDefault().newWatchService();
            Paths.get(dirPath).register(watchService, StandardWatchEventKinds.ENTRY_CREATE);

            WatchKey key;
            while ((key = watchService.take()) != null) {

                for (WatchEvent<?> event : key.pollEvents()) {
                    String fileName = event.context().toString();
                    if (isPdfFile(fileName)) {
                        consumer.accept(dirPath + fileName);
                        return;
                    }
                }

                key.reset();

            }
        }
        catch (IOException | InterruptedException e) {} 

还是有其他解决方法?

最佳答案

如果要在等待事件时超时,则需要使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值