Java 文件系统监控(WatchService)

Posted HiPari

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 文件系统监控(WatchService)相关的知识,希望对你有一定的参考价值。

文件系统监控这种场景应用非常广,比如spring boot里面的devtool,它就是监控文件系统,当文件一改变(增、删、改),它就会重新加载。


直接上代码

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.WatchKey;
import java.nio.file.WatchService;

public class TestWatchService {
    public static void main(String[] args) {
        String s = "E:\\abc\\abc";
        
        try {
            WatchService ws = FileSystems.getDefault().newWatchService();
            Path path = Paths.get(s);
            path.register(ws, StandardWatchEventKinds.ENTRY_CREATE,StandardWatchEventKinds.ENTRY_DELETE,StandardWatchEventKinds.ENTRY_MODIFY);
            
            while(true) {
                WatchKey key = ws.take();
                key.pollEvents().forEach(we -> {
                    System.out.println(we.context()+" --> "+we.kind());
                });
                boolean valid = key.reset();
                if(!valid) {
                    break;
                }
            }
            
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

以上是关于Java 文件系统监控(WatchService)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java WatchService 监视文件夹中的文件夹

java实现文件监控

java如何实现linux下实时监控文件是不是有变化

JDK 之 NIO 2 WatchServiceWatchKey(监控文件变化)

Java 7 WatchService 对其他人来说很慢吗?

Java WatchService 在观看映射驱动器时不生成事件