使用Java7提供的WatchService给目录添加新建文件监控

程序:

复制代码
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;

public class Java7FolderListener {
    public static void main(String[] a) {
        beginWatchFolder("C:\\TEMP");
    }
    
    private static void beginWatchFolder(String folderName) {
        final Path path = Paths.get(folderName);
        try (WatchService watchService = FileSystems.getDefault().newWatchService()) {
            // 给path路径加上文件观察服务
            path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
            while (true) {
                final WatchKey key = watchService.take();
                for (WatchEvent<?> watchEvent : key.pollEvents()) {
                    final WatchEvent.Kind<?> kind = watchEvent.kind();

                    if (kind == StandardWatchEventKinds.ENTRY_CREATE) {
                        System.out.println("[新建]");
                    }
                    
                    // get the filename for the event
                    final WatchEvent<Path> watchEventPath = (WatchEvent<Path>) watchEvent;
                    final Path filename = watchEventPath.context();
                    // print it out
                    System.out.println(kind + " -> " + filename);
                }
                boolean valid = key.reset();
                if (!valid) {
                    break;
                }
            }
        } catch (IOException | InterruptedException ex) {
            System.err.println(ex);
        }
    }
}
复制代码

输出:

[新建]
ENTRY_CREATE -> LICENSE
[新建]
ENTRY_CREATE -> README.html
[新建]
ENTRY_CREATE -> release

参考:

https://www.cnblogs.com/Soy-technology/p/11779262.html#/cnblog/works/article/11779262

--2020年4月5日--

posted @   逆火狂飙  阅读(313)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2018-04-05 【Canvas与桌面】十字网格黑灰背景(1920x1080)
2018-04-05 【Canvas与电脑桌面】米字格黑灰背景电脑桌面(1920x1080)
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示