Cet article présente principalement un exemple de Java utilisant WatchService pour surveiller les modifications de fichiers. L'éditeur pense que c'est plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil
Parmi les différentes solutions pour implémenter le centre de configuration, il y a la méthode WatchService basée sur JDK7+, assez pratique dans les applications autonomes.
Le code est le suivant :
package com.longge.mytest; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Path; 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; import java.util.List; /** * 测试JDK的WatchService监听文件变化 * @author yangzhilong * */ public class TestWatchService { public static void main(String[] args) throws IOException { // 需要监听的文件目录(只能监听目录) String path = "d:/test"; WatchService watchService = FileSystems.getDefault().newWatchService(); Path p = Paths.get(path); p.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_CREATE); Thread thread = new Thread(() -> { try { while(true){ WatchKey watchKey = watchService.take(); List<WatchEvent<?>> watchEvents = watchKey.pollEvents(); for(WatchEvent<?> event : watchEvents){ //TODO 根据事件类型采取不同的操作。。。。。。。 System.out.println("["+path+"/"+event.context()+"]文件发生了["+event.kind()+"]事件"); } watchKey.reset(); } } catch (InterruptedException e) { e.printStackTrace(); } }); thread.setDaemon(false); thread.start(); // 增加jvm关闭的钩子来关闭监听 Runtime.getRuntime().addShutdownHook(new Thread(() -> { try { watchService.close(); } catch (Exception e) { } })); } }
Le résultat de l'exécution de l'exemple est similaire au suivant :
[d :/test/1.txt] fichier L'événement [ENTRY_MODIFY] s'est produit
L'événement [ENTRY_DELETE] s'est produit dans le fichier [d:/test/1.txt]
L'événement [ENTRY_CREATE] s'est produit dans le fichier [ d:/test/new text document.txt]
[d:/test/New Text Document.txt] le fichier a un événement [ENTRY_DELETE]
[d:/test/222.txt] le fichier a un [ ENTRY_CREATE] événement
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!