问题标签 [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 投票
2 回答
573 浏览

java - 如何检查 WatchService 跟踪的文件夹?

如果我开始监视文件夹中的更改A,删除并重新创建它,那么 WatchService 将不会触发该文件夹的任何事件。我想在 WatchServiceA忘记文件夹后重新观看它。

如何检查该文件夹A是否仍被 WatchService 跟踪?

0 投票
1 回答
184 浏览

java - 重命名监视文件夹时该怎么办?

在 Windows 上测试。观察文件夹中的变化a。当我将监视文件夹重命名ab WatchService静止轨道更改时。问题是那a已经不存在了。(Path)event.context()返回监视文件夹的相对路径。因此,您现在正在观看a文件夹和文件abc.txt已更改。但实际上它是放在文件夹中的b

如何获得更改文件的正确绝对路径?

0 投票
2 回答
3078 浏览

java - Java - how to find out if a directory is being used by another process?

I want to use java 7's WatchService to monitor changes to a directory.
It seems it tries to lock the folder, and will throw an exception if it fails, but does not seem to provide any method of locking it before-hand / checking if it is already locked.

I need to know if a directory is currently being used by another a process or not. Since I can't lock it or open a stream to it (because it's a directory), I'm looking for something more intelligent than trying to modify it and sleeping if failed, or try/catch with sleep.

Ideally, I would like a blocking call until it is available.

EDIT: I can't seem to acquire a FileLock on the folder. When I try to lock the folder, I get "FileNotFoundException (access denied)". Googling suggests you can't use that object on a directory.

registration code:

Failing scenario:
Let's say I'm listening to a folder f for new creation.
If a sub-folder g is created in it, I want to listen to changes in g. However, if I create a new folder in f (in Windows), this will fail because Windows is locking the folder until a name is given.

Thanks

0 投票
0 回答
157 浏览

watchservice - WatchService.take() 是否会阻止 WatchService 上的其他操作?

我想知道take()在另一个线程中调用之后是否可以注册更多目录或关闭 WatchService。a ClosedWatchServiceExceptionthen 会被抛出到调用的线程中take()吗?take()或者其他操作在更改事件发生并返回之前不会生效?谢谢

0 投票
1 回答
779 浏览

java - StandardWatchEvents.ENTRY_MODIFY 触发修改子文件夹?

示例:我的桌面有一个子文件夹“Desktop/sub”

如果只注册了 Desktop 并且一旦启动 WatchService 我修改子文件夹的内容..它是否应该触发 ENTRY_MODIFY?我试过了,但没有。它仅适用于修改注册文件夹中的文件(在本例中为桌面)。

只是问这个问题,因为在 OCPJP7 的模拟考试中,它说实际上即使修改诸如“Desktop/sub”之类的子文件夹,例如在“Desktop/sub”中删除一个文件,它也应该触发该事件。

但是,我再次尝试了它,但它不起作用。

这是代码:

提前致谢。

0 投票
3 回答
1127 浏览

java - 在线程池执行程序中顺序处理文件

我们使用 JDK 7 watchservice 来监视可以包含 xml 或 csv 文件的目录。这些文件被放入线程池中,然后被处理并推送到数据库中。这个应用程序永远运行,观察目录,并在可用时保持处理文件。XML 文件很小,不需要时间,但是每个 csv 文件可以包含超过 80,000 条记录,因此处理需要时间才能放入数据库。当从线程池处理 15 个 csv 文件时,Java 应用程序会出现内存不足错误。当csv文件进入线程池时,有什么方法可以串行处理,即一次只能处理一个。

0 投票
1 回答
5721 浏览

java - 等待密钥时如何停止Java WatchService?

我试图停止我的线程在哪里WatchService工作。但是怎么做呢?我WatchService在那里等待文件夹中的新更新:

我在那里开始我的线程:

我试图停止:

当我尝试执行停止时,我得到NullPointerException了关键。当我刚刚用 关闭 watchService 时watchService.close(),我得到另一个异常ClosedWatchServiceException

如何关闭一个WatchService没有任何异常?对不起,我的英语不好..

0 投票
3 回答
23541 浏览

java - 如何查看文件夹和子文件夹的更改

我正在尝试查看特定文件夹的更改,然后如果其中发生任何添加/编辑/删除,我需要获取该文件夹及其子文件夹中所有文件的更改类型。我正在使用WatchService它,但它只监视一个路径,它不处理子文件夹。

这是我的方法:

就像我之前说的,我只获取所选路径中文件的日志,并且我想查看所有文件夹和子文件夹文件,例如:

示例 1:

示例 2:

有没有更好的解决方案?

0 投票
1 回答
669 浏览

java - 在单例 bean 中调用 WatchService 的问题

我们想定期观察文件的变化,我们使用的是 jboss 7 。以下是我的代码片段。我在单例bean的postconstruct方法中初始化了watcher,并安排了一个方法来轮询watch事件。当我第一次修改文件时,我可以观察到更改,但是没有收到对文件的后续修改。谁能让我知道可能是什么问题

}

已经有一个链接解释了 @Asynchronous 标签(EJB 3.1 和 NIO2:监控文件系统)。但是我需要知道这种方法可能有什么问题。

0 投票
3 回答
2083 浏览

java - Java 7 NIO watchservice vs jpathwatch

我正在工作的项目一直在使用 Java 6 和 jpathwatch (.95),现在正在升级到 Java 7。目前在 Windows 7 和 2008 Server 上。我正在重构代码区域以使用新的 Java 7 NIO,并且相对简单——甚至使用 NIO.2 来替换 jpathwatch。但是,我们代码的文件监视区域开始未能通过单元测试。似乎 Java 7 NIO 不会接收到其他机器的 UNC 路径中的更改 -

为了测试,我实现了 Java NIO 教程站点http://docs.oracle.com/javase/tutorial/essential/io/fileio.html中的代码,然后在 jpathwwatch 导入中创建了一个重复的类交换,而不是 Java NIO进口。jpathwatch 适用于 UNC 路径,但 Java NIO 不适用。它似乎注册甚至返回该位置的初始事件键:(示例输出)

但从不承认任何进一步的变化。

jpathwatch 注册并报告目录和文件事件(尽管它不会在注册后立即报告初始事件)。

尽管在 jpathwatch 讨论中看到不支持网络观看 - 请注意 Uwe Pachler 对 UNC 路径的响应 - http://sourceforge.net/p/jpathwatch/discussion/888207/thread/8ea778de/?limit=25# 0037

有没有人看过 UNC 路径和 Java 7 NIO.2?任何其他或更新的解决方案?

谢谢,

-mjash