-----------------------
Îļþ¼àÊÓ |
-----------------------
# ¼àÊÓij¸öĿ¼
* Îļþ´´½¨
* ɾ³ý
* ÐÞ¸Ä
-----------------------
Demo |
-----------------------
//WatchService ÊÇḬ̈߳²È«µÄ£¬¸ú×ÙÎļþʼþµÄ·þÎñ£¬Ò»°ãÊÇÓöÀÁ¢Ïß³ÌÆô¶¯¸ú×Ù
public static void watchRNDir(Path path) throws Exception {
//´´½¨ WatchService ¶ÔÏó
WatchService watchService = FileSystems.getDefault().newWatchService();
//¸øpath·¾¶¼ÓÉÏÎļþ¹Û²ì·þÎñ
path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_DELETE);
// ¿ªÊ¼¼àÊÓ·¾¶
while (true) {
//Ïß³Ì×èÈû
final WatchKey key = watchService.take();
//»ñȡʼþ¼¯ºÏ
List> watchEventList = key.pollEvents();
//±éÀú
for (WatchEvent> watchEvent : watchEventList) {
// »ñȡʼþ
final WatchEvent.Kind> kind = watchEvent.kind();
// handle OVERFLOW event
if (kind == StandardWatchEventKinds.OVERFLOW) {
continue;
}
//´´½¨Ê¼þ
if (kind == StandardWatchEventKinds.ENTRY_CREATE) {
}
//ÐÞ¸Äʼþ
if (kind == StandardWatchEventKinds.ENTRY_MODIFY) {
}
//ɾ³ýʼþ
if (kind == StandardWatchEventKinds.ENTRY_DELETE) {
}
//°Ñµ±Ç°Ê¼þÇ¿ÖÆ×ª»»·ºÐÍΪ Path µÄʼþ
final WatchEvent watchEventPath = (WatchEvent) watchEvent;
//»ñȡʼþÎļþÃû³Æ
final Path filename = watchEventPath.context();
// print it out
System.out.println(kind + " -> " + filename);
}
// reset the keyf
boolean valid = key.reset();
// exit loop if the key is not valid (if the directory was
// deleted, for
if (!valid) {
break;
}
}
}
------------------------------------
WatchService |
------------------------------------
# ¹¹½¨
WatchService watchService = FileSystems.getDefault().newWatchService();
# ·½·¨
WatchKey take();
* ¼ìË÷²¢ÒƳýÏÂÒ»¸öwatch key¡£ÈôûÓпɼìË÷µÄÔò×èÈû¡£
------------------------------------
WatchKey |
------------------------------------
# ¹¹½¨
ͨ¹ý WatchService ʵÀýµÄ take()·½·¨»ñÈ¡
# ·½·¨
List> pollEvents();
* ¼ìË÷²¢ÒƳýËùÓиÃwatch key
------------------------------------
WatchEvent |
------------------------------------
# ¹¹½¨
# ·½·¨
Kind> kind();
* ·µ»ØÊ¼þÖÖÀà
------------------------------------
Kind |
------------------------------------
# ·½·¨
String name();
* ·µ»ØÊ¼þµÄÃû³Æ
------------------------------------
StandardWatchEventKinds |
------------------------------------
# ʼþÀà
# ¾²Ì¬×Ö¶Î
OVERFLOW
ENTRY_CREATE
ENTRY_DELETE
ENTRY_MODIFY