问题标签 [watchservice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
84079 浏览

java - 我可以使用 WatchService(而不是整个目录)监视单个文件的更改吗?

当我尝试注册文件而不是目录时java.nio.file.NotDirectoryException,会抛出异常。我可以监听单个文件更改,而不是整个目录吗?

0 投票
1 回答
682 浏览

java - 未使用 Java WatchService 修改文件时如何触发事件?

我想在文件停止修改时触发一个事件。我正在轮询一个目录,如果文件名与“input.csv”匹配,那么我想在该文件上触发一个事件。检查文件是否被修改的时间为 10 秒。当没有事件发生时,我得到一个空指针异常。这是我的示例代码:

0 投票
0 回答
233 浏览

java - 使用WatchService在Java中停止文件修改时如何在文件上触发事件?

我一直在使用 WatchService api 来实现这一点。我想检查文件是否在 10 秒内保持不变,如果是,则处理该文件。我开发了一个代码来检查文件是否已被修改 ia 目录但无法确定最后修改时间。请编辑我的代码或提出任何其他答案。

假设我在指定文件夹中有一个名为 input.csv 的文件,并且在代码运行时,我修改了 input.csv,然后 WatchService API 接收到该事件。

0 投票
0 回答
1190 浏览

java - WatchService 在 Linux 上不可靠

我一直在尝试 Java 7 中 WatchService 的一个简单应用程序。它监视目录中的新文件。它在 Linux CentOS 6 上运行。我可以将文件复制到监视目录并获得文件创建事件。都好。

我以 Oracle 示例为基础。

问题是密钥莫名其妙地无效。Javadoc 说有几种情况会导致这种情况,例如取消密钥。我不会取消它。它在程序运行时无效,没有发生文件创建。只是坐在那里,它会在几分钟或更长时间内失效。有一次它运行了四天,然后神秘地失效了。

Javadoc 中唯一可能的解释是监视目录已删除或不再可用。我当然不会删除它。这就留下了可用性。

现在我想知道 WatchService 正在使用的 Linux 实现是否告诉它该目录由于系统负载或其他原因不可用。我无法想象会发生什么。系统并没有真正加载。包含该目录的文件系统是该系统的本地文件系统。该目录不被其他任何东西使用。

还有哪些其他可能性?

0 投票
3 回答
15216 浏览

java - 使用 Java 监视服务监视子文件夹

watchKey用来监听特定文件夹中的文件更改。


它对我来说很好。如果我修改 raja 文件夹中的文件,它会给我带有路径的文件名。但是,当我将一些文件放在“E:/Raja/Test”之类的子文件夹中时,它只给了我放置它的路径,而不是文件名。

如何获取文件名?

0 投票
15 回答
30029 浏览

java - Java 7 WatchService - 忽略同一事件的多次出现

javadocStandardWatchEventKinds.ENTRY_MODIFY说:

目录条目已修改。当为此事件注册目录时,当观察到目录中的条目已被修改时,WatchKey 将排队。此事件的事件计数为 1 或更大。

当您通过编辑器编辑文件的内容时,它会同时修改日期(或其他元数据)和内容。因此,您得到两个ENTRY_MODIFY事件,但每个事件都有一个count1(至少这是我所看到的)。

我正在尝试使用以下代码监视手动更新(即通过命令行)的配置文件(servers.cfg以前注册过) :WatchServicevi

由于您收到两个ENTRY_MODIFY事件,因此仅需要一次时,上述内容将重新加载配置两次。假设可能有不止一个这样的事件,是否有任何方法可以忽略除其中之一之外的所有事件?

如果WatchServiceAPI 有这样的实用程序就更好了。(我有点不想检查每个事件之间的时间。我的代码中的所有处理程序方法都是同步的。

如果您从一个目录创建(复制/粘贴)文件到监视目录,也会发生同样的事情。您如何将这两者结合到一个事件中?

0 投票
0 回答
288 浏览

java - 在tomcat启动时启动java应用程序

我想在启动 tomcat 时启动 watchservice 应用程序。我通过在 web.xml 中使用侦听器来执行此操作。正如预期的那样,手表服务成功运行。但是在那之后tomcat没有启动。Watch键控制了那个。如何在启动应用程序时启动watchservice.????

0 投票
0 回答
481 浏览

java - 在服务器启动时运行 watchService

所以我需要在服务器启动时运行 watchService 以将文件添加到文件夹中,所以我决定使用上下文侦听器。这是我正在尝试做的示例代码。它显然不起作用,但它总结了我需要的东西:

如您所见,无限循环“while(valid”阻止应用程序正确部署。所以我什至无法测试它

我需要一些关于如何正确解决这个问题的建议和建议。谢谢

0 投票
1 回答
637 浏览

watchservice - WatchService 循环运行两次,除非在调试模式下单步执行

我对 WatchService 真的很陌生,我遇到了一个非常有趣的错误。当我在正常模式(运行)下运行我的代码时,它将循环两次 for(Watch event: key1.pollEvents()) 循环并创建两个谷歌日历事件,但如果我使用调试模式单步执行它,它只会添加一个事件。我从网上抓取了几乎所有的代码,试图了解 WatchService 的工作原理。我真的不知道我在这里做什么,所以任何帮助都会很棒。这是我的代码

我认为这可能是时间问题,所以我尝试了 sleep try catch,但没有奏效。

0 投票
1 回答
2036 浏览

java - 如何正确处理 watchservice 中的 pollEvents() 溢出类型?

我正在使用监视服务来监视目录并在新创建的文件上触发逻辑。我最近遇到的挑战之一是当需要处理大量文件并且被复制到监视目录中的速度太快而无法处理时会触发溢出。

API说这个关于溢出:

文件系统报告事件的速度可能比检索或处理事件的速度更快,并且实现可能对其可能累积的事件数量施加未指定的限制。如果实现故意丢弃事件,那么它会安排键的 pollEvents 方法返回事件类型为 OVERFLOW 的元素。

我的问题是,我怎样才能正确处理溢出,而不会丢失任何需要处理的事件?

我的手表服务代码如下所示: