• java- WatchService监控


    java7中新增WatchService可以监控文件的变动信息(监控到文件是修改,新增、删除等事件;)

    其中注册事件是需要的:

    StandardWatchEventKinds.ENTRY_MODIFY,//更新
    StandardWatchEventKinds.ENTRY_DELETE,//创建
    StandardWatchEventKinds.ENTRY_CREATE,//删除

    下面是案例:

    import java.io.*;
    import java.nio.file.*;
    import java.nio.file.attribute.*;
    import java.nio.channels.*;
    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.List;
    
    public class WatchFile
    {
        public static void main(String[] args) 
                throws Exception{
    
            String filePath = ("E:");
    
            // 获取文件系统的WatchService对象
            WatchService watchService = FileSystems.getDefault().newWatchService();
            Paths.get(filePath).register(watchService 
                    , StandardWatchEventKinds.ENTRY_CREATE
                    , StandardWatchEventKinds.ENTRY_MODIFY
                    , StandardWatchEventKinds.ENTRY_DELETE);
        // 如要监控子文件
            File file = new File(filePath);
            LinkedList<File> fList = new LinkedList<File>();
            fList.addLast(file);
            while (fList.size() > 0 ) {
                File f = fList.removeFirst();
                if(f.listFiles() == null)
                    continue;
                for(File file2 : f.listFiles()){
                        if (file2.isDirectory()){//下一级目录
                        fList.addLast(file2);
                        //依次注册子目录
                        Paths.get(file2.getAbsolutePath()).register(watchService 
                                , StandardWatchEventKinds.ENTRY_CREATE
                                , StandardWatchEventKinds.ENTRY_MODIFY
                                , StandardWatchEventKinds.ENTRY_DELETE);
                    }
                }
            }
    
            while(true)
            {
                // 获取下一个文件改动事件
                WatchKey key = watchService.take();
                for (WatchEvent<?> event : key.pollEvents()) 
                {
                    System.out.println(event.context() +" --> " + event.kind());
                }
                // 重设WatchKey
                boolean valid = key.reset();
                // 如果重设失败,退出监听
                if (!valid) 
                {
                    break;
                }
            }
        }
    }
  • 相关阅读:
    lsof命令详解
    nmap命令详解
    ss命令详解
    netstat命令详解
    ifup,ifdown命令详解
    playbook部署nginx
    cento7忘记root密码怎么办
    正确关闭selinux
    使用ssh-agent管理私钥
    gitlab中的CI
  • 原文地址:https://www.cnblogs.com/hwaggLee/p/6552561.html
Copyright © 2020-2023  润新知