是否有免费软件或开源的Java复杂文件系统监视器?

我正在寻找一个Java库,可以通知我有关文件系统的变化。

我发现了一些免费的库,但他们都使用暴力检测,即定期轮询。 而其他的一直都是商业的。

我正在寻找的是一个库,它使用操作系统的文件监视器function,例如Win32的FindFirstChangeNotification ,Linux的FAM以及其他操作系统上的任何其他操作系统。 我不介意使用蛮力作为回退,但是对于Windows和Linux,它应该使用可用的操作系统function。

JNotify似乎正在做你所需要的。

轮询一个文件系统(比如更新时间改变的目录)不会对你的系统造成很大的负担,不应该打折扣。 像Tomcat等应用程序使用这个pipe理热点部署几乎没有问题。

现在并没有太多的帮助,但是即将到来的Java 7中就有一个WatchService 。

如果您愿意在Java的最前沿工作,请参阅JSR 203:更多新的I / O API (也称为nio2),这将在Java 7中推出

一个新的文件系统接口,支持批量访问文件属性, 更改通知 ,转义到特定于文件系统的API,以及用于可插入文件系统实现的服务提供者接口;

jpathwatch是另一种select。 它实现了用于目录监视的Java 7的API,所以如果需要的话,很容易移植到Java 7。

为什么必须是Java?

要使用特定于平台的API的库必须具有本地代码,所以本质上,该库将包装本地代码,使不同API的使用变得透明。

我build议,如果你没有find自己的图书馆,那么你将不得不使用蛮力,你可以调用它,或者使用JNI为每个平台调用本地API。

目前使用轮询的另外两个选项:

  • Apache Camel文件组件
  • Spring集成文件观察器

但是,由于两个项目都拥有较大的活动社区,因此将来可能会更新它们以支持Java 7 WatchService( FileSystem.newWatchService() ),它将使用底层平台的通知工具(如果有的话)。

这两个库还提供了一个有用的抽象层,用于与其他各种传输和系统集成,以便您的主应用程序代码不依赖于从文件系统接收到的input。

Interesting Posts