最近。在研究一些比较成熟的框架。他们还发现,他们中的一些相当不错的文章。现在,对于一些在你们中间一个简单的翻译(版的英文文章,非常有帮助)。

译:原文链接

你有没有发现,当你编辑一个文件。同一时候使用还有一个IDE或编辑器进行编辑的时候,会出现一个对话框通知"一个打开的文件的已经改变,是否须要又一次载入?”。但像NetBeans IDE等一些应用程序仅仅是静静地更新文件而没有通知你。

要实现这样的"文件监控”功能,程序必须可以检測到在文件系统相关的文件夹中发生了什么。一种方法是检查文件系统发生了什么变化。但这样的方法是低效的。它不能大规模的监控已打开的文件或文件夹。还有一种方法是使用java.nio.file包提供一个文件监控服务。这个服务同意你为一个文件夹或多个文件夹注冊监控服务。

注冊时。仅仅须要告诉须要监控的事件,包含文件的创建、删除、改动。当服务监控到对应的事件之后,它就会运行注冊的事件。在注冊的事件会有一个用来监控已经注冊的事件的线程或线程池,这样当一个注冊事件发生后,它就会进行相关的处理。



        文件文件夹监控服务WatchService使用很easy,你甚至能够自行定义。你能够直接使用它或者在原有基础之上进行扩展,以便更加适合您的特殊须要。

创建一个文件夹监控服务的基本过程例如以下:

        1、创建一个文件系统监控服务-WatchService。

        2、在文件系统监控服务上注冊你须要监控的文件文件夹的。注冊文件夹时。指定的监控的类型。

        3、编写一个无限等待。监控事件发生的事件方法。以便当监控队列中的文件夹发生响应的事件之后,可以及时响应和终止。

4、整个监控过程的关键在于。能够从监控服务提供的监控秘钥中获取监控到的文件名

        5、监控到等待事件的发生的关键在于能够运行须要的过程。

        6、事件监控完毕之后,又一次等待。

7、监控服务退出或关闭时,调用内部关闭的方法进行关闭。

……

为了更加清晰的说明整个文件文件夹的运行过程。我给大家找了一个比較好的说明文档,链接例如以下:

http://blog.csdn.net/cxhzqhzq/article/details/6604300

Java高级应用(一个)-文件夹监控服务的更多相关文章

  1. java+上传一个文件夹

    在web项目中上传文件夹现在已经成为了一个主流的需求.在OA,或者企业ERP系统中都有类似的需求.上传文件夹并且保留层级结构能够对用户行成很好的引导,用户使用起来也更方便.能够提供更高级的应用支撑. ...

  2. java遍历统计一个文件夹中所有文件单词出现次数

    思路就是通过递归进行文件遍历,把所有文件夹中的非目录文件都遍历一遍,并判断其中读取到的字符串是不是单词,并对单词进行记录和计数,并在最后进行排序输出,下面是代码: package word; impo ...

  3. 用Java实现将多级文件夹下的所有文件统一放到一个文件夹中

    每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了 ...

  4. 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合

    package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...

  5. flume监控一个linux指定的一个文件夹的文件信息

    1.编辑一个配置文件 flume-app.conf  拷贝至fulme的安装目录的conf下 # The configuration file needs to define the sources, ...

  6. Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件

    package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...

  7. Java遍历一个文件夹下的全部文件

    Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常 ...

  8. 代码实现:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名

    package com.loaderman.test; import java.io.File; import java.io.FileReader; import java.util.Scanner ...

  9. java io流 对文件夹的操作

    java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...

随机推荐

  1. vim修复,telnet安装启动,linux更新软件源

     vim修复: 修复前提,你到UBUNTU能够联网.否则仅仅能卸载,不能安装 1.sudo apt-get remove vim-common 2.sudo apt-get install vim ...

  2. Qt 信号-槽的同步与异步处理

    通常使用的connect,实际上最后一个參数使用的是Qt::AutoConnection类型:Qt支持6种连接方式.当中3中最主要: 1.Qt::DirectConnection(直连方式)(信号与槽 ...

  3. 关于DP与背包

    听说过动态规划(DP)的同学应该都知道有背包问题的存在. 首先我们来了解一下动态规划 基本思想: 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中, 可能会有很多可行解.没一个解都对应于一 ...

  4. #import </usr/include/objc/objc-class.h> not such file or directory问题的解决方法

    近期在使用一些开源的demo,打开后出现这个错误,然后能够把 #import </usr/include/objc/objc-class.h> 改动为以下 #import <objc ...

  5. Android的事件分发

    1. Touch事件和绘制事件的异同之处 Touch事件和绘制事件非常相似,都是由ViewRoot派发下来的,可是不同之处在绘制事件是由应用中的某个View发起请求,一层一层上传到ViewRoot.再 ...

  6. Swift开发教程--关于Existing instance variable &#39;_delegate&#39;...的解决的方法

    xcode编译提示问题:Existing instance variable '_delegate' for property 'delegate' with  assign attribute mu ...

  7. arm cpu的架构及分类说明

    今天在编译mplayer for mx27ads的时候, 碰到了armv5te与armv6优化的问题. 默认的交叉编译器支持armv5te也支持armv6,就默认使用了mplayer中mpeg4的ar ...

  8. RabbitMQ 服务

    RabbitMQ 使用场景一   安装环境 1.下载安装 Erlang 运行时环境 2.下载安装 RabbitMQ Server 应用程序 3.启动 RabbitMQ 服务(默认启动) 4.安装管理平 ...

  9. CentOS-7-x86_64-DVD-1511.iso

    http://vault.centos.org/7.2.1511/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso

  10. .Net Core Socket 压力测试

    原文:.Net Core Socket 压力测试 .Net Core Socket 压力测试 想起之前同事说go lang写的push service单机可以到达80万连接,于是就想测试下.Net C ...