`
zzc1684
  • 浏览: 1221051 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java7 WatchService监听文件

    博客分类:
  • Java
阅读更多

 

    package com.ssh.config;  
      
    import java.io.IOException;  
    import java.nio.file.FileSystems;  
    import java.nio.file.Path;  
    import java.nio.file.Paths;  
    import java.nio.file.StandardWatchEventKinds;  
    import java.nio.file.WatchEvent;  
    import java.nio.file.WatchKey;  
    import java.nio.file.WatchService;  
    import java.util.List;  
    import java.util.concurrent.ExecutorService;  
    import java.util.concurrent.Executors;  
      
    public class ResourceListener {  
        private static ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);  
        private WatchService ws;  
        private String listenerPath;  
        private ResourceListener(String path) {  
            try {  
                ws = FileSystems.getDefault().newWatchService();  
                this.listenerPath = path;  
                start();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
      
        private void start() {  
            fixedThreadPool.execute(new Listner(ws,this.listenerPath));  
        }  
      
        public static void addListener(String path) throws IOException {  
            ResourceListener resourceListener = new ResourceListener(path);  
            Path p = Paths.get(path);  
            p.register(resourceListener.ws,StandardWatchEventKinds.ENTRY_MODIFY,  
                StandardWatchEventKinds.ENTRY_DELETE,  
                StandardWatchEventKinds.ENTRY_CREATE);  
        }  
          
      
        public static void main(String[] args) throws IOException {  
            ResourceListener.addListener("E:/aaa");  
        }  
    }  
      
    class Listner implements Runnable {  
        private WatchService service;  
        private String rootPath;  
          
        public Listner(WatchService service,String rootPath) {  
            this.service = service;  
            this.rootPath = rootPath;  
        }  
      
        public void run() {  
            try {  
                while(true){  
                    WatchKey watchKey = service.take();  
                    List<WatchEvent<?>> watchEvents = watchKey.pollEvents();  
                    for(WatchEvent<?> event : watchEvents){  
                        //TODO 根据事件类型采取不同的操作。。。。。。。  
                        System.out.println("["+rootPath+"/"+event.context()+"]文件发生了["+event.kind()+"]事件");    
                    }  
                    watchKey.reset();  
                }  
            } catch (InterruptedException e) {  
                e.printStackTrace();  
            }finally{  
                System.out.println("fdsfsdf");  
                try {  
                    service.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
              
        }  
    }  

 

 

 

 

 

分享到:
评论

相关推荐

    java 文件实时监听watchService

    Java中的`WatchService`是一个强大的工具,用于监听文件系统中的事件,例如文件的创建、修改或删除。在Java 7及以上版本中引入,它提供了一种有效的方式来进行实时监控,而无需频繁轮询文件系统,这极大地提高了效率...

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

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

    java8实现文件目录监听

    用java8实现一个文件目录的监听,目录中文件创建、修改、删除等操作

    使用WatchService监听文件变化.docx

    WatchService提供了一个机制,允许应用程序监听指定目录下的文件和子目录的变化,例如文件的创建、修改和删除。 首先,你需要通过`FileSystems.getDefault().newWatchService()`获取一个WatchService实例。这个服务...

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

    Java提供了一种称为`WatchService`的机制,它允许程序监听指定目录下的文件系统事件。通过`java.nio.file.FileSystems`和`java.nio.file.Path`类,我们可以创建并注册一个观察服务。以下是一个简单的示例: ```java...

    spring boot文件夹文件监听程序

    首先,文件监听是通过文件系统观察者(File System Watcher)API来实现的,这个API在Java 7中被引入。Spring Boot项目可以利用Java的`java.nio.file.FileSystems`和`java.nio.file.Path`类来创建一个观察者,监听...

    JAVA USB监听器

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

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

    在任务中首先创建一个WatchService实例,将path路径注册到WatchService并监听文件创建(ENTRY_CREATE)事件。然后使用一个无限循环,每次循环中使用WatchService的take方法阻塞等待文件变化事件的发生。 在获取到...

    java使用WatchService监控文件夹示例

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

    java实现监视文件修改变更

    首先,Java提供了`java.nio.file`包,其中的`WatchService`接口为我们提供了文件系统事件的通知机制。下面我们将一步步讲解如何使用`WatchService`来实现文件变更监控。 1. **注册监听器**: 首先,我们需要创建一...

    java监测文件变化

    首先,Java中并没有内置的API直接支持文件系统的监听,但我们可以利用`java.nio.file`包中的`WatchService`接口来实现这一功能。`WatchService`提供了一个观察文件系统事件的机制,例如创建、删除、修改文件或目录。...

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

    在Java 7及以上版本中,`java.nio.file`包提供了`WatchService`接口,用于实现这一功能。开发者可以通过`Files.newWatchService()`方法获取一个`WatchService`实例,然后调用`Path.register()`方法来为指定路径注册...

    FileMonitor 基于jdk7文件监控WatchService

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

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

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

    java实现,简单文件监控

    总的来说,Java的`WatchService`为开发者提供了一种有效的方式去监控文件系统的动态,而剪贴板的监听则需要借助额外的库或系统API。通过合理的编程和事件处理,我们可以构建出一个能够满足特定需求的文件监控系统。

    Java文件同步程序

    这可以通过文件系统的监听器(如Java的WatchService API)来实现。 2. **文件传输**:文件的传输通常采用TCP/IP协议,通过Socket建立连接,然后利用输入输出流读取和写入文件内容。为了提高效率,可以使用断点续传...

    java jre7里的nio实现稳健监控

    Java JRE7引入了NIO.2(New I/O 2)框架,显著改进了对文件系统操作的支持,其中最重要的增强之一就是引入了WatchService服务。这个服务允许程序以一种高效且优雅的方式监控文件或目录的变化,而无需像JRE6之前那样...

    文件同步代码

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

    Java进程配置文件Reload

    Java中可以使用`java.nio.file.WatchService` API来监听文件系统的变化,当检测到配置文件有改动时,触发重新加载。 3. **配置文件加载库**:许多第三方库提供了配置文件的动态加载功能,例如Spring Framework的`...

    Java I/O文件读写/删除/复制等

    Java 7引入了文件系统观察服务 `WatchService`,允许程序监听文件系统事件,如文件创建、修改和删除。 10. **流的关闭** 为了防止资源泄漏,完成文件操作后,记得关闭打开的流。通常使用 `try-with-resources` ...

Global site tag (gtag.js) - Google Analytics