java 7目录监控问题

标签 java directory monitoring registration java-7

我刚刚看到 java 7 的一个很棒的功能,目录观察器。它会在目录中发生更改时告诉您,而无需轮询目录。

1.) 但它说如果文件系统不支持注册更改事件,它会回退到轮询。是否所有典型的 linux 和 windows 文件系统(extX、ntfs、reiserXXX、jsf、zfs)都支持此功能?

2.) 重命名目录中的文件是创建事件还是更改事件?还是一删除一创建?我可以在一个系统上测试它,但它对所有文件系统都是一样的吗?

最佳答案

看起来你在谈论 WatchService .

ENTRY_CREATE的措辞事件表明,如果创建新文件或将文件重命名到目录中,则会感知到新条目。如果文件被重命名并保留在同一目录中,它没有说明会触发哪些事件。

措辞还指出,服务是基于操作系统还是轮询取决于实现。我怀疑这是由 JRE 实现的,所以即使您知道特定操作系统支持它,也不能保证该服务将使用操作系统级功能或诉诸轮询。事实上,该服务根本不提供任何方式来判断它是在使用轮询还是操作系统级功能。

API 定义的操作也不像监听器。 WatchService 确实会自动监视,但要获取发生的事件列表,您仍然必须从服务中手动请求已看到的事件。它似乎没有提供任何 Hook 来在出现新事件时自动被调用。

关于java 7目录监控问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315309/

相关文章:

java - 机器人 : isDirectory() function always returns false

java - EJB 应用程序关闭钩子(Hook)

c# - 应用健康监测

c# - 搜索目录树时使用 SearchOption 或递归搜索的 Directory.GetFiles

java - 用java解析apache tomcat accesslog

java - Swagger注解遍历DB中所有表

java - 查找矩阵中的唯一元素

Python:解析和分组目录中的文件名

python-3.x - 使用 python 管理事件循环的早期返回

java - 如何在 Java 中使用 C API?杰尼?