標籤:java 檔案系統
NIO.2的Path類提供了如下的一個方法來監聽檔案系統的變化。
register(WatcherService watcher,WatchEvent.Kind<?>... events):用watcher監聽該path代表的目錄下檔案變化。event參數指定要監聽哪些類型的事件。
WatchService有三個方法來監聽目錄的檔案變化事件。
WatchKey poll():擷取下一個WatchKey,如果沒有WatchKey發生就立即返回null;
WatcheKey poll(long timeout,TimeUnit unit):嘗試等待timeout時間去擷取下一個WatchKey;
WatchKey take():擷取下一個WatchKey,如果沒有發生就一直等待;
如果程式需要一直監控,則應該選擇使用take()方法,如果程式只需要監控指定時間,則使用poll方法。
- import java.nio.file.FileSystems;
- import java.nio.file.Paths;
- import java.nio.file.StandardWatchEventKinds;
- import java.nio.file.WatchEvent;
- import java.nio.file.WatchKey;
- import java.nio.file.WatchService;
- public class Test {
- public static void main(String[] args) throws Exception
- {
-
- WatchService watchService=FileSystems.getDefault().newWatchService();
- Paths.get("C:/").register(watchService,
- StandardWatchEventKinds.ENTRY_CREATE,
- StandardWatchEventKinds.ENTRY_DELETE,
- StandardWatchEventKinds.ENTRY_MODIFY);
- while(true)
- {
- WatchKey key=watchService.take();
- for(WatchEvent<?> event:key.pollEvents())
- {
- System.out.println(event.context()+"發生了"+event.kind()+"事件");
- }
- if(!key.reset())
- {
- break;
- }
- }
- }
- }
著作權聲明:本文為博主http://www.zuiniusn.com原創文章,未經博主允許不得轉載。
Java監控檔案變化