Java实现文件夹监控

/**
 * 监控指定文件目录
 *
 * dirPath 指定目录路径
 **/
public boolean watchDirectory(String dirPath) {

        // 判断要监控的目录是否存在
        if (!(new File(dirPath).exists())) {
            log.error(MessageFormat.format("目录{0}不存在!", dirPath));
            return false;
        }

        // 注册要监控的文件夹
        Path watchDirectory = Paths.get(new File(dirPath).getPath());

        try (WatchService watchService = FileSystems.getDefault().newWatchService()) {
            watchDirectory.register(watchService,
            // 指定要监控的文件操作类型,创建/修改/删除
            StandardWatchEventKinds.ENTRY_CREATE);
            // 死循环执行监控
            while (true) {
                // 获取文件操作对象
                WatchKey watchKey = watchService.take();

                // 针对不同的文件操作类型进行处理
                for (WatchEvent event : watchKey.pollEvents()) {
                    WatchEvent.Kind eventKind = event.kind();
                    if (eventKind == StandardWatchEventKinds.OVERFLOW) {
                        continue;
                    }
                    // 获取发生改变的文件名
                    String fileName = event.context().toString();
                    
                    // 当文件创建执行
                    if (eventKind == StandardWatchEventKinds.ENTRY_CREATE) {

                        // TODO: 自定义处理动作
                    }
                }
                // 每次执行完后重置
                boolean isKeyValid = watchKey.reset();
                if (!isKeyValid) {
                    break;
                }
            }
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }

        return true;
    }

你可能感兴趣的:(后端开发)