JDK1.7 Nio实现文件监听

    jdk1.7测试可用。加了点无聊的东西帮助阅读。

import java.io.File;
import java.io.IOException;  
import java.nio.file.FileSystems;  
import java.nio.file.Path;  
import java.nio.file.Paths;  
import java.nio.file.WatchEvent;  
import java.nio.file.WatchKey;  
import java.nio.file.WatchService;  
import java.nio.file.StandardWatchEventKinds;

import org.apache.commons.io.FileUtils;
  
/** 
 * 文件事件监听 
 */  
public class TestWatcherService {  
      
    private WatchService watcher;  
      
    public TestWatcherService(Path path)throws IOException{  
        watcher = FileSystems.getDefault().newWatchService();  
        //注册事件类型 新建文件,删除文件,修改文件
        //StandardWatchEventKinds.ENTRY_CREATE,StandardWatchEventKinds.ENTRY_DELETE,StandardWatchEventKinds.ENTRY_MODIFY 
        path.register(watcher,StandardWatchEventKinds.ENTRY_CREATE,StandardWatchEventKinds.ENTRY_DELETE,StandardWatchEventKinds.ENTRY_MODIFY);  
    }  
      
    public void handleEvents() throws InterruptedException{  
        while(true){  
            WatchKey key = watcher.take();  
            for(WatchEvent<?> event : key.pollEvents()){  
                WatchEvent.Kind kind = event.kind();  
                  
                if(kind == StandardWatchEventKinds.OVERFLOW){//事件可能lost or discarded  
                    continue;  
                }  
                WatchEvent<Path> e = (WatchEvent<Path>)event; 
                //触发事件的文件
                Path file = e.context(); 
                String her = "";
                if(kind.name().equals(StandardWatchEventKinds.ENTRY_CREATE.name())){
                    her="创建文件";
                }else if(kind.name().equals(StandardWatchEventKinds.ENTRY_DELETE.name())){
                    her="删除文件";
                }else{
                    her="修改文件";
                }
                System.out.println("!!!"+her+":"+file.getFileName());  
            }  
            if(!key.reset()){  
                break;  
            }  
        }  
    }  
      
    public static void main(String args[]) throws IOException, InterruptedException{  
        //要监控的路径
        String path="c:\\test";
        new TestWatcherService(Paths.get(path)).handleEvents();  
    }  
}

按照上述监控路径,在C盘新建test文件夹,在test文件夹下新建文件。输出如下:

162015_wbmQ_2270422.png

转载于:https://my.oschina.net/yangzg/blog/343602

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值