See More

----------------------- Îļþ¼àÊÓ | ----------------------- # ¼àÊÓ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