9得票2回答
Java I/O:在任何读写操作之前确保文件未被其他进程锁定

我在使用Java 7 WatchService API跟踪目录中文件内容的应用程序中遇到了一个反复出现的问题。当底层文件系统在文件上触发修改事件时,我想立即计算其SHA-256。 但经常出现另一个进程打开了该文件(例如Word),从而持有独占锁,防止我的应用程序进行任何读/写操作。如果针对已...

9得票2回答
Java 7监控服务在文件写入之前触发ENTRY_CREATE。

我有一个监视文件夹的watch服务。一旦创建文件,我就会处理目录并更新树形视图。这在ENTRY_DELETE上很好用,但是有时(不总是)当WatchEvent发生ENTRY_CREATE事件时,该文件还没有被写入磁盘。我通过创建一个new File()来确认这一点,该文件包含所注册的监视服务的...

9得票2回答
Java监视服务:无法使用本地服务器挂载的远程文件

我有一个Java程序在监控我本地服务器上挂载的远程文件夹。但是当远程文件夹中的内容发生更改时,它无法检测到任何更改/修改。 如果在挂载的文件夹中进行更改/修改,则它可以正常工作。 通过搜索网络,如Java文档中所述: 如果监视的文件不位于本地存储设备上,则实现特定的是是否可以检测到对文件...

9得票2回答
WatchService 有时会触发两次,有时只触发一次 ENTRY_MODIFY。

我正在使用来自Oracle的WatchService示例: import java.nio.file.*; import static java.nio.file.StandardWatchEventKinds.*; import static java.nio.file.LinkOptio...

9得票2回答
当向监视文件夹添加新文件时,Java NIO watch Service会同时创建“ENTRY_CREATE”和“ENTRY_MODIFY”吗?

我注意到使用java.nio.file.WatchService时出现了奇怪的行为(不确定这是否是预期行为)。 问题在于我已经注册了一个带有WatchService的文件夹。 当我将新文件复制到此文件夹中时,会生成两个WatchEvent事件,分别是: 'ENTRY_CREATE'和'EN...

9得票2回答
如何使用WatchService(Java)监视子目录的更改?

我想监视某个目录及其子目录的变化。我尝试使用WatchService,但是我无法知道文件是从哪个目录更改的。如何从WatchEvent中检索完整路径?

8得票3回答
Java 7 NIO 的监视服务与 jpathwatch 相比如何?

我正在参与的项目一直使用Java 6和jpathwatch (.95),现在正在升级为Java 7。目前在Windows 7和2008 Server上运行。我正在重构部分代码以使用新的Java 7 NIO,这相对来说是比较简单的 - 甚至可以使用NIO.2替换jpathwatch。然而,我们代...

8得票4回答
Java 7 WatchService - 因为另一个进程正在使用该文件,所以无法访问该文件

我会尽力为您翻译中文。以下是需要翻译的内容: 我按照 Java7 nio2教程 中关于监视目录更改的内容,使用 WatchDir.java 代码示例递归监视整个目录的内容。 代码如下: // Get list of events for the watch key. for (Watch...

8得票1回答
Java:在复制内容之前,WatchService会得到通知

我尝试将一个非常小的文件复制粘贴到被监视的文件夹中。第一次操作很顺利,但在后续的所有操作中,我都会收到一个异常,说另一个进程已经处理了该文件。通过实验,我发现我的服务是在Windows创建文件时得到通知,而不是在复制其内容时得到通知。如果我锁定文件,Windows 就无法复制任何数据,文件也会...

7得票2回答
使用WatchService编写单元测试代码

以下是使用WatchService来使数据与文件同步的简单示例。 我的问题是如何可靠地测试代码。 测试有时会失败,可能是因为操作系统/ JVM将事件放入监视服务中,而测试线程则轮询监视服务之间存在竞争条件。 我希望保持代码简单,单线程和非阻塞,同时也可以进行测试。 我强烈反对在测试代码中加入任...