`
HongCheng
  • 浏览: 26364 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

NIO2.0文件监听

    博客分类:
  • JDK7
阅读更多
import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;
import static java.nio.file.StandardWatchEventKinds.OVERFLOW;
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;

/*
* 文件监听
*
* 实现流程如下:
*
*1.为文件系统创建一个WatchService 实例 watcher
*2.为你想监听的目录注册 watcher。注册时,要注明监听那些事件。
*3.在无限循环里面等待事件的触发。当一个事件发生时,key发出信号,并且加入到watcher的queue
* 4.从watcher的queue查找到key,你可以从中获取到文件名等相关信息
* 5.遍历key的各种事件
* 6.重置 key,重新等待事件
* 7.关闭服务
*/
public class TestIOWatchDir {
public void watchDir(String dirPath) {
try {
Path path = Paths.get(dirPath);
WatchService watcher = FileSystems.getDefault().newWatchService();
// path.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
path.register(watcher, ENTRY_CREATE);
while (true) {
WatchKey key = watcher.take();
for (WatchEvent<?> event : key.pollEvents()) {
WatchEvent.Kind<?> kind = event.kind();
if (kind == OVERFLOW) {
continue;
}
Path filePath = (Path) event.context();
System.out.println(filePath);
key.reset();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
String dirPath = "D:/";
new TestIOWatchDir().watchDir(dirPath);
}

}

备注:参考的相关资源来源于网络ITEYE
分享到:
评论

相关推荐

    NIO网络通讯编程

    8. NIO 2.0(New I/O 2.0,Java 7引入):在Java 7中,NIO得到了进一步增强,增加了Asynchronous Channel Group和AsynchronousSocketChannel等异步I/O功能,使得开发者能够更加方便地编写高性能的并发程序。...

    NIO trick and trap NIO网络

    随后随着JSR 203的发展,NIO 2.0在JDK 7中正式发布。 - **核心组件**:主要包括Buffers(缓冲区)、Channels(通道)和Selectors(选择器)。这些组件共同协作,实现了高效的数据传输和事件驱动的IO模型。 #### NIO...

    NIO.2 入门,第 2 部分: 文件系统 API

    在Java的NIO.2(New IO 2.0)框架中,文件系统API提供了更加高效和灵活的方式来处理文件和目录。本篇我们将深入探讨NIO.2中的几个关键概念和类,包括`Files`, `Path`, `FileAttributes`, `DirectoryWatcher`以及`...

    异步输入/输出aio.doc

    Java NIO 2.0,也称为New I/O 2.0或NIO 2,引入了对异步I/O的支持,特别是在文件和网络I/O方面。在Java中,异步I/O的核心类和接口如下: 1. `AsynchronousChannel`:标记一个通道支持异步IO操作。 2. `...

    JDK7新特性(完整篇)

    4. **JDK7新特性&lt;四&gt; NIO2.0 文件系统** NIO2(非阻塞I/O的第二版)带来了全新的文件系统接口,包括Path API、WatchService API等,提供了异步文件操作和文件事件监听的能力,极大地提升了文件操作的灵活性和性能。...

    dubbo2.0-源码阅读

    理解TCP/IP协议、Socket编程、NIO(非阻塞I/O)等技术对于理解Dubbo如何实现高效稳定的远程调用至关重要。 4. **RPC机制**:了解常见的RPC框架如RMI、Hessian、Thrift等的工作原理,可以帮助理解Dubbo是如何提供跨...

    Scalable IO in Java

    Java NIO.2,也称为NIO 2.0或Java 7的File API,增强了文件I/O功能,包括异步文件操作、路径API和文件属性查询等。AsynchronousFileChannel使得文件操作可以在后台线程中进行,不会阻塞主线程,非常适合大规模文件...

    通过Socket传送文件的例子

    为了提高效率和可靠性,还可以考虑使用非阻塞I/O(NIO)或者异步I/O(AIO)进行优化。 总之,Socket编程是实现客户端和服务器之间通信的基础,通过它可以实现文件的高效传输。实际应用中,根据具体需求,可以对上述...

    Mina2.0完全剖析,完全自学手册

    ### Mina2.0完全剖析,完全自学手册 #### Apache Mina 概述 Apache Mina(Multipurpose Infrastructure Networked Applications)是一个强大的网络应用框架,主要用于帮助开发者构建高性能且易于扩展的网络应用程序...

    java源码:基于MVC的Java资源管理器 v2.0.rar

    通过分析和学习这个项目,开发者不仅可以了解如何在Java中实现MVC,还可以学习到文件系统的API使用,如`java.io`和`java.nio`包中的类。此外,对于Swing组件的使用和事件处理也是提升GUI编程技能的好机会。 总的来...

    Mina2.0中文参考手册(word版)

    在使用 Mina 2.0 开发时,开发者需要具备 Java IO、NIO、Java Socket、多线程以及并发库(如 `java.util.concurrent.*`)的基础知识。Mina 为服务器端和客户端通信提供了封装,确保应用程序与底层网络通信细节分离,...

    Apache_Mina2.0学习笔记

    1. **下载使用的Jar包**:在开始使用Mina之前,你需要从Apache官方网站下载最新版本的Mina2.0库,它包含了所有必要的jar文件,包括核心库、依赖的IoBuffer和Netty组件等。 2. **工程创建配置**:创建Java项目后,将...

    Mina2.0学习笔记(重点)

    ### Mina2.0 学习笔记(重点) #### 一、Mina入门 ##### 第一步:下载使用的Jar包 1. **Mina核心库**:登录Mina官网下载`mina2.0.1.zip`,解压后得到`mina-core-2.0.0-M1.jar`。 2. **日志框架SLF4J**:访问SLF4J...

Global site tag (gtag.js) - Google Analytics