`

Java7 使用WatchService监听文件变化

阅读更多

Watch service 用来观察被注册了的对象的变化和事件。例如,在文件系统监控某一个文件目录下文件资源的创建,修改,删除,这个是WatchService的一种实现方式,用来监听文件状态变化的。是WatchService和Watchable两个接口的配合使用,WatchService类似于在观察者模式中的观察者,Watchable类似域观察者模式中的被观察者。

 

实例如下:

@Test
    public void testResourceChanged() throws IOException, InterruptedException, ExecutionException {
        final String pathName = ResourceChangedTest.class.getResource("./").getPath();
        
        // 文件监控线程
        Executors.newCachedThreadPool().submit(new Runnable() {
            public void run() {
                try {
                    WatchService watchService = FileSystems.getDefault().newWatchService();
                    Path path = Paths.get(pathName);
                    // 注册监听器
                    path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE);
                    while (true) {
                        // 阻塞方式,消费文件更改事件
                        List<WatchEvent<?>> watchEvents = watchService.take().pollEvents();
                        for (WatchEvent<?> watchEvent : watchEvents) {
                            System.out.printf("[%s]文件发生了[%s]事件。%n", watchEvent.context(), watchEvent.kind());
                        }
                    }
                } catch(Exception e) {}
            }
        });
        
        Thread.sleep(1000);
        
        Path path2 = Paths.get(pathName + "test.xml");
        File file = path2.toFile();
        file.createNewFile();// 新建文件
        file.delete();// 删除文件
        
        Thread.sleep(1000);
    }
输出结果:
[test.xml]文件发生了[ENTRY_CREATE]事件。
[test.xml]文件发生了[ENTRY_DELETE]事件。

 

分享到:
评论
1 楼 cs6641468 2014-01-03  
WatchKey都没有reset,第二次loop妥妥的捕获不到的,少年

相关推荐

    使用WatchService监听文件变化.docx

    这个简单的程序可以作为基础,扩展为更复杂的文件系统监控解决方案,例如,当检测到特定类型的文件变化时执行某些操作,或者在文件被创建、修改或删除时发送通知。 请注意,WatchService的实现依赖于操作系统,因此...

    Java利用WatchService监听文件变化示例

    * 测试JDK的WatchService监听文件变化 * @author yangzhilong */ public class TestWatchService { public static void main(String[] args) throws IOException { // 需要监听的文件目录(只能监听目录) String...

    java 监听本地文件自动上传服务器

    一旦检测到文件变化,你可以执行相应的处理逻辑,例如将新创建或修改的文件上传到服务器。 接下来,我们讨论“模拟POST提交文件流同步服务器文件”。在Java中,可以使用`java.net.HttpURLConnection`或第三方库如...

    spring boot文件夹文件监听程序

    总的来说,"spring boot文件夹文件监听程序"是一个结合了Java文件系统监听和Spring Boot自动化功能的实用工具,它可以实时监控指定目录,及时响应文件变化,对于文件管理、数据同步等场景具有很高的价值。...

    JAVA USB监听器

    4. **文件系统监控**:利用FileObserver或WatchService监听USB设备目录,捕获文件变化。 5. **后台服务**:创建并管理后台服务,使得程序能在用户无感知的情况下持续运行。 6. **权限控制**:适当地设置程序的权限,...

    java监测文件变化

    本文将详细讲解如何使用Java实现文件变化的监控,并通过一个具体的示例来阐述相关知识点。 首先,Java中并没有内置的API直接支持文件系统的监听,但我们可以利用`java.nio.file`包中的`WatchService`接口来实现这一...

    Java 实现实时监听文件夹是否有新文件增加并上传服务器功能

    然后使用一个无限循环,每次循环中使用WatchService的take方法阻塞等待文件变化事件的发生。 在获取到文件变化事件后,遍历事件,通过event.context()获取到被操作的文件名,并构造出完整的文件路径。然后使用阻塞...

    监视指定文件的变化.rar

    3. Java:可以使用`jnotify`库,或者在Java 7及以上版本中直接使用`java.nio.file.FileSystems`和`java.nio.file.WatchService`。 4. Go:`fsnotify`库提供了一个简单的接口来监控文件系统事件。 五、实用工具 除了...

    实时监听微信文件,将接收到的文件的只读属性去掉

    在IT行业中,实时监听文件系统的变化是一项常见的任务,特别是在需要自动化处理或监控特定文件时。本项目关注的是针对微信接收的文件进行实时监控,并去除这些文件的只读属性。这通常是为了实现更自由的文件操作,...

    java使用WatchService监控文件夹示例

    在Java编程中,`WatchService` 是一个强大的工具,它允许开发者监听文件系统中的特定事件,如文件或目录的创建、修改和删除。这个功能在处理实时数据更新、日志跟踪或其他需要监视文件系统变动的场景中非常有用。在...

    FileMonitor 基于jdk7文件监控WatchService

    JDK7引入了`WatchService`接口,为开发者提供了一种监听文件系统变化的能力。然而,`WatchService`的原生API较为复杂,使用起来并不直观。针对这一问题,出现了`FileMonitor`,它封装了`WatchService`,简化了文件...

    java监测一个目录是否有文件的增删改,附例子和jar

    `WatchService`是Java 7引入的一个新特性,它允许我们注册到文件系统,监听特定目录下的事件。首先,我们需要创建一个`WatchService`实例,然后通过`WatchKey`注册我们感兴趣的目录。`WatchKey`会返回一个键,这个键...

    文件同步代码

    文件同步代码通常涉及到文件复制、文件夹监控以及各种API的使用,如Java 7中的`WatchService`和第三方库如`jnotify`。下面将详细介绍这些知识点。 **文件复制操作** 文件复制是一个基础但关键的功能,用于在不同的...

    java jre7里的nio实现稳健监控

    // 获取并处理下一个文件变化事件 WatchKey key = watchService.take(); for (WatchEvent&lt;?&gt; event : key.pollEvents()) { System.out.println(event.context() + "文件发生了" + event.kind() + "事件" + "此...

    java实现,简单文件监控

    为了监控文件系统的变化,我们需要使用`java.nio.file`包中的`WatchService`接口。`WatchService`提供了一个注册机制,可以监听指定目录下的文件系统事件。 下面是一些关键步骤来实现简单的文件监控: 1. **创建...

    java实现文件变化监控的方法(推荐)

    在Java中,实现文件变化监控通常涉及到文件系统事件监听。这个任务可以通过使用Java的`java.nio.file`包中的`WatchService`接口来完成。下面将详细介绍如何利用Spring框架配置和实现文件变化监控。 首先,`...

    java监听U盘

    Java的`java.nio.file`包提供了一个名为`WatchService`的接口,它允许我们注册文件或目录,并监听它们的各种事件,如创建、删除、修改等。当U盘插入时,通常会在系统中创建一个新的挂载点,通过监听这个挂载点的变化...

    Java进程配置文件Reload

    2. **监听文件变化**:为了实现在运行时自动重载配置,我们需要监控配置文件的变更。Java中可以使用`java.nio.file.WatchService` API来监听文件系统的变化,当检测到配置文件有改动时,触发重新加载。 3. **配置...

    JAVA监听目录改变

    Java提供了一个名为`java.nio.file.FileSystem`的API,它包含了一个`WatchService`接口,该接口用于注册目录以便监听其变化。当我们需要监听目录时,首先需要创建一个`WatchService`实例,然后注册感兴趣的事件类型...

    Java写的简单文件目录监控程序

    - `WatchService`是Java中用来监听文件系统事件的核心接口。通过调用`FileSystem.newWatchService()`方法获取实例。 2. **WatchKey和Watchable**: - `WatchKey`代表了对某个文件或目录的监听注册,由`...

Global site tag (gtag.js) - Google Analytics