当前位置: 首页 > 知识库问答 >
问题:

一个事件被“重复”意味着什么?

太叔昊苍
2023-03-14

阅读WatchEvent的javadocs,我看到count()方法让我知道事件是否由其结果重复。

返回事件计数。如果事件计数大于1,则这是一个重复事件。

这到底是什么意思?这是否意味着两个或多个WatchEvent对象引用同一个“事件”(例如,正在创建的文件)?

我正在Oracle网站上试验新的WatchServiceAPI的示例,这一部分让我感到困惑,尤其是因为我会在同一测试代码的连续运行中获得不同数量的事件(其中我使用FileWriter写入一个文件,而不与之手动交互),但count()的结果永远不会超过1。

编辑:我意识到这可能与关于重复事件的另一个问题有关,但这并不能回答重复事件的实际含义。

共有2个答案

国晟睿
2023-03-14

watch服务允许您为目录中的事件注册侦听器。如果一个事件在通知您的服务之前发生多次,它会得到一个增量,而不是两个这样的事件导致通知。

这是专门针对文件的,因此它处理目录中的文件创建、修改和删除。

祁博涛
2023-03-14

我花了一段时间来试验这个,我的结论是:

对于文件f和事件类型e,如果同一文件f发生了多个e类型的事件,则会重复一个事件。

如果对多个文件f1f2f3发生e类型事件,但每个文件只发生一次,则这些事件都不会重复。

当你时。从WatchService获取()aWatchKey,您将获得一个WatchEvent,用于每个经历事件的文件,以及它经历的每个事件类型。。如果自上次从WatchService获取WatchKey以来,该文件多次发生此类事件,count()将大于1。

也就是说,如果您正在查看其中包含A. txt的目录,然后发生以下事件:

  1. B.txt在目录中创建

您将获得四个监视事件

  1. B. txt的创建事件。
  2. B. txt修改事件。
  3. A. txt的修改事件。它的. count()将是2。
  4. B. txt的删除事件。

这意味着在WatchKey中,您将永远不会获得超过3*n的事件,其中n是目录中任意点的文件数。

StandardWatchEventTypes中定义了四种类型的事件,但是溢出事件表明事件可能已经丢失,所以我从上面的数字中省略了它。

 类似资料:
  • 我不明白Java中是什么意思,希望有人能解释一下是什么意思。

  • 我想创建一个

  • 所以我在Cruncher的帮助下更新了我的代码,现在点击器似乎工作得更好。但是,当 while(按下)循环正在运行时,不会调用其他事件 公共类函数实现本机鼠标侦听器 { } 知道为什么while循环会阻止事件被调用吗?我需要使用多线程还是一些爵士乐? 非常感谢。

  • 我有一个异常,说我的className$a.a()方法是在一个空对象引用上调用的。我不明白$符号是什么意思。我使用Proguard进行映射,但文件被覆盖,现在我的firebase崩溃日志显示了这个异常消息

  • 套接字由ip:port定义。服务器和客户端都将有自己的套接字 套接字连接由五个touples定义:server_ip、server_port、client_ip、client_port、protocol 套接字描述符是标识套接字的整数值 我尝试实现自己的服务器,其中socket()和accept()返回不同的套接字描述符值(总是这样吗?)。我的问题是,为什么说accept()会创建一个新的套接字,