java- WatchService监控

摘要:
valid){break;}}}}

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.*;
importjava.util.ArrayList;
importjava.util.LinkedList;
importjava.util.List;
public classWatchFile
{
    public static voidmain(String[] args) 
            throwsException{
        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 = newFile(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;
            }
        }
    }
}

免责声明:文章转载自《java- WatchService监控》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇windows时间函数ANSI 和 UNICODE 的函数对应表下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

RF(一)RF的安装步骤

7.安装Appium 8,安装最新版本的nodeJS:node-v6.9.49,在命令行上执行Appium命令,您应该能够启动Appium服务器~~~~...

sql 加减时间

另外,MySQL中还有两个函数subdate(),subtime(),建议,用date_sub()来替代。MySQLperiod_add(P,N):日期加/减去N月。mysql˃selectperiod_add,period_add|period_add|period_add|结果|200810|20080806|MySQLperiod_diff:日期P1-...

使用jsPlumb插件实现动态连线功能

jsPlumb是一个强大的JavaScript连线库,它可以将html中的元素用箭头、曲线、直线等连接起来,适用于开发Web上的图表、建模工具等,其实jsPlumb可能主要是用来做流程图的,它在实现这方面的功能上非常强大,我在项目中只使用了它少部分功能,来实现项目中连线的效果。...

Python之路

Python之路引子与其感慨路难行,不如马上出发PythonPython之路(一):初识Python之路(二):基本数据类型(上)Python之路(三):基本数据类型(下)Python之路(四):函数介绍及使用Python之路(五):内置函数Python之路(六):迭代器,装饰器,生成器Python之路(七):字符串处理Python之路(八):基础模块(一)...

Swift开发中 JSON对象/JSON字符串/Data的互转

本文将介绍常见的转换#pragmark JSON(object)------˃JSON string 1,原生方法//JSON------˃data------˃JSON string letdata=try?JSON序列化。data#pragmark数据------˃JSON(对象)1.本机方法guardletarray=try?[[String:AnyO...

数据库软考易混淆知识之信息化基础、项目管理

2、 关键路径关键路径是活动图中最长的路径示例:图中显示了软件项目的活动图,其中固定点表示项目里程碑,连接顶点的边表示包含的活动,边上的数字表示活动持续时间的天数,则完成项目的最短时间为()天,活动EH和IJ的放松时间分别为()日。...