2009-07-08 20 views
25

我正在尋找可以通知我關於文件系統更改的Java庫。是否有免費軟件或開源的Java的複雜文件系統監視器?

我發現了一些免費的庫,但他們都使用蠻力檢測,即定期輪詢。其他的都是商業的。

什麼我要找的是從操作系統使用的文件監控功能適用於Win32,FAM Linux和任何可用的其它OS庫,即 FindFirstChangeNotification。我不介意使用蠻力作爲後備,但對於Windows和Linux,它應該使用可用的操作系統功能。

+2

由於這是一個編程站點,所以這個問題似乎是無關緊要的。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[Software Recommendations Stack Exchange](https://softwarerecs.stackexchange.com/)會是一個更好的地方。 – jww 2014-09-22 04:19:04

+0

Java 7引入了[WatchService](https://docs.oracle.com/javase/8/docs/api/java/nio/file/WatchService.html)。 – 2016-04-01 00:27:17

回答

25

JNotify似乎做你所需要的。

輪詢一個文件系統(比如更新時間改變的目錄)不會給你的系統帶來很大的負擔,而且不應該打折扣。像Tomcat等應用程序使用它來管理熱點部署,但幾乎沒有問題。

現在的幫助不是很多,但即將推出的Java 7正是爲此而設計了一個WatchService

4

爲什麼它必須是Java?

要使用特定於平臺的API的庫必須具有本機代碼,因此本質上該庫將封裝使本不同API的使用透明的本機代碼。

我建議如果你沒有找到自己的圖書館,那麼你將不得不在你調用它時使用暴力,或者使用JNI爲每個平臺調用本機API。

+0

是的,這基本上就是這樣一個庫,一個包裝。但我希望這樣的事情已經存在。 (它存在,但不是免費/開源) – 2009-07-08 06:54:55

7

如果您對Java的流血邊緣感到非常舒服,請參閱JSR 203: More New I/O APIs aka nio2,這是Java 7

甲新的文件系統的接口,支持 批量訪問到文件 屬性,改變通知, 逃逸到文件系統專用的API, 和 可插拔文件系統實現一個服務提供者接口;

6

jpathwatch是另一種選擇。它實現了用於目錄監視的Java 7的API,因此如果需要,可以輕鬆移植到Java 7。

0

兩個選項是目前使用輪詢:

然而,由於這兩個項目具有較大的活躍的社區,他們很可能會在未來的更新支持Java 7 WatchService(FileSystem.newWatchService()),其中確實使用使用底層平臺米的通知設施,如果有的話。

這兩個庫還提供了一個有用的抽象層,用於集成各種其他傳輸和系統,以便您的主應用程序代碼不依賴於從文件系統接收的輸入。

相關問題