问题标签 [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.
java - 如何检查 WatchService 跟踪的文件夹?
如果我开始监视文件夹中的更改A
,删除并重新创建它,那么 WatchService 将不会触发该文件夹的任何事件。我想在 WatchServiceA
忘记文件夹后重新观看它。
如何检查该文件夹A
是否仍被 WatchService 跟踪?
java - 重命名监视文件夹时该怎么办?
在 Windows 上测试。观察文件夹中的变化a
。当我将监视文件夹重命名a
为b
WatchService
静止轨道更改时。问题是那a
已经不存在了。(Path)event.context()
返回监视文件夹的相对路径。因此,您现在正在观看a
文件夹和文件abc.txt
已更改。但实际上它是放在文件夹中的b
。
如何获得更改文件的正确绝对路径?
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
watchservice - WatchService.take() 是否会阻止 WatchService 上的其他操作?
我想知道take()
在另一个线程中调用之后是否可以注册更多目录或关闭 WatchService。a ClosedWatchServiceException
then 会被抛出到调用的线程中take()
吗?take()
或者其他操作在更改事件发生并返回之前不会生效?谢谢
java - StandardWatchEvents.ENTRY_MODIFY 触发修改子文件夹?
示例:我的桌面有一个子文件夹“Desktop/sub”
如果只注册了 Desktop 并且一旦启动 WatchService 我修改子文件夹的内容..它是否应该触发 ENTRY_MODIFY?我试过了,但没有。它仅适用于修改注册文件夹中的文件(在本例中为桌面)。
只是问这个问题,因为在 OCPJP7 的模拟考试中,它说实际上即使修改诸如“Desktop/sub”之类的子文件夹,例如在“Desktop/sub”中删除一个文件,它也应该触发该事件。
但是,我再次尝试了它,但它不起作用。
这是代码:
提前致谢。
java - 在线程池执行程序中顺序处理文件
我们使用 JDK 7 watchservice 来监视可以包含 xml 或 csv 文件的目录。这些文件被放入线程池中,然后被处理并推送到数据库中。这个应用程序永远运行,观察目录,并在可用时保持处理文件。XML 文件很小,不需要时间,但是每个 csv 文件可以包含超过 80,000 条记录,因此处理需要时间才能放入数据库。当从线程池处理 15 个 csv 文件时,Java 应用程序会出现内存不足错误。当csv文件进入线程池时,有什么方法可以串行处理,即一次只能处理一个。
java - 等待密钥时如何停止Java WatchService?
我试图停止我的线程在哪里WatchService
工作。但是怎么做呢?我WatchService
在那里等待文件夹中的新更新:
我在那里开始我的线程:
我试图停止:
当我尝试执行停止时,我得到NullPointerException
了关键。当我刚刚用 关闭 watchService 时watchService.close()
,我得到另一个异常ClosedWatchServiceException
:
如何关闭一个WatchService
没有任何异常?对不起,我的英语不好..
java - 如何查看文件夹和子文件夹的更改
我正在尝试查看特定文件夹的更改,然后如果其中发生任何添加/编辑/删除,我需要获取该文件夹及其子文件夹中所有文件的更改类型。我正在使用WatchService
它,但它只监视一个路径,它不处理子文件夹。
这是我的方法:
就像我之前说的,我只获取所选路径中文件的日志,并且我想查看所有文件夹和子文件夹文件,例如:
示例 1:
示例 2:
有没有更好的解决方案?
java - 在单例 bean 中调用 WatchService 的问题
我们想定期观察文件的变化,我们使用的是 jboss 7 。以下是我的代码片段。我在单例bean的postconstruct方法中初始化了watcher,并安排了一个方法来轮询watch事件。当我第一次修改文件时,我可以观察到更改,但是没有收到对文件的后续修改。谁能让我知道可能是什么问题
}
已经有一个链接解释了 @Asynchronous 标签(EJB 3.1 和 NIO2:监控文件系统)。但是我需要知道这种方法可能有什么问题。
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