我在寻找一个Java库,可以通知我有关文件系统上的变化。
我发现了一些免费的图书馆,但它们都使用蛮力检测,即轮询定期。 而其他的总是商业。
我正在寻找的是从OS使用文件监控功能库,即FindFirstChangeNotification为Win32, FAM Linux和任何可用的其它OS。 我不介意,如果蛮力是作为后备使用,但对于Windows和Linux,应该利用现有的OS功能。
我在寻找一个Java库,可以通知我有关文件系统上的变化。
我发现了一些免费的图书馆,但它们都使用蛮力检测,即轮询定期。 而其他的总是商业。
我正在寻找的是从OS使用文件监控功能库,即FindFirstChangeNotification为Win32, FAM Linux和任何可用的其它OS。 我不介意,如果蛮力是作为后备使用,但对于Windows和Linux,应该利用现有的OS功能。
JNotify似乎做你所需要的。
轮询文件系统(比如,用于更新时间变化的目录)将不会强加给你的系统上的显著负载,并且不应该被忽视。 如Tomcat等应用使用该管理热部署了一个什么问题。
这不是一个很大的帮助,现在,但即将推出的Java 7的WatchService正是因为这个。
如果您熟悉Java的的最前沿工作,看看JSR 203:更多新的I / O API的又名NIO2这是在Java 7的推出。
支持对文件属性更改通知批量访问一个新的文件系统接口,逃避特定文件系统的API,并为可插拔文件系统实现一个服务提供者接口;
jpathwatch是另一种选择。 它实现了Java 7对目录监控API,所以如果需要的话,很容易移植到Java 7中。
为什么一定要成为Java?
即要使用特定于平台的API必须有本机代码库中,所以基本上库将是围绕本机代码,使透明不同的API的使用包装。
我建议如果你没有找到你的网络的自我,那么你将不得不要么用蛮力你怎么称呼它,或拨打使用JNI每个平台的原生API。
当前使用轮询两个更多的选择:
然而,由于这两个项目具有较大的活跃的社区,他们很可能会在未来的更新,以支持Java 7 WatchService( FileSystem.newWatchService() ),它不使用底层平台的通知设施(如有)。
这两个库还用于与各种其他传输和系统集成提供一种有用的抽象层,从而在从文件系统接收的输入主应用程序代码是不依赖。