In diesem Artikel wird hauptsächlich ein Beispiel für die Verwendung von WatchService zum Überwachen von Dateiänderungen durch Java vorgestellt. Der Herausgeber findet es recht gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor, um einen Blick darauf zu werfen
Unter den verschiedenen Lösungen zur Implementierung des Konfigurationscenters gibt es die auf JDK7+ basierende WatchService-Methode, die in eigenständigen Anwendungen durchaus praktisch ist.
Der Code lautet wie folgt:
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) { } })); } }
Das Ergebnis der Ausführung des Beispiels ähnelt dem folgenden:
[d :/test/1.txt]-Datei Das Ereignis [ENTRY_MODIFY] ist aufgetreten.
Das Ereignis [ENTRY_DELETE] ist in der Datei [d:/test/1.txt] aufgetreten.
Das Ereignis [ENTRY_CREATE] ist in der Datei [ aufgetreten. d:/test/new text document.txt]
[d:/test/New Text Document.txt]-Datei hat ein [ENTRY_DELETE]-Ereignis
[d:/test/222.txt]-Datei hat ein [ ENTRY_CREATE]-Ereignis
Das obige ist der detaillierte Inhalt vonCode-Case-Sharing zur Verwendung von WatchService in Java zur Überwachung von Dateiänderungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!