Java高级应用(一个)-文件夹监控服务
最近。在研究一些比较成熟的框架。他们还发现,他们中的一些相当不错的文章。现在,对于一些在你们中间一个简单的翻译(版的英文文章,非常有帮助)。
译:原文链接
你有没有发现,当你编辑一个文件。同一时候使用还有一个IDE或编辑器进行编辑的时候,会出现一个对话框通知"一个打开的文件的已经改变,是否须要又一次载入?”。但像NetBeans IDE等一些应用程序仅仅是静静地更新文件而没有通知你。
要实现这样的"文件监控”功能,程序必须可以检測到在文件系统相关的文件夹中发生了什么。一种方法是检查文件系统发生了什么变化。但这样的方法是低效的。它不能大规模的监控已打开的文件或文件夹。还有一种方法是使用java.nio.file包提供一个文件监控服务。这个服务同意你为一个文件夹或多个文件夹注冊监控服务。
注冊时。仅仅须要告诉须要监控的事件,包含文件的创建、删除、改动。当服务监控到对应的事件之后,它就会运行注冊的事件。在注冊的事件会有一个用来监控已经注冊的事件的线程或线程池,这样当一个注冊事件发生后,它就会进行相关的处理。
文件文件夹监控服务WatchService使用很easy,你甚至能够自行定义。你能够直接使用它或者在原有基础之上进行扩展,以便更加适合您的特殊须要。
创建一个文件夹监控服务的基本过程例如以下:
1、创建一个文件系统监控服务-WatchService。
2、在文件系统监控服务上注冊你须要监控的文件文件夹的。注冊文件夹时。指定的监控的类型。
3、编写一个无限等待。监控事件发生的事件方法。以便当监控队列中的文件夹发生响应的事件之后,可以及时响应和终止。
4、整个监控过程的关键在于。能够从监控服务提供的监控秘钥中获取监控到的文件名
5、监控到等待事件的发生的关键在于能够运行须要的过程。
6、事件监控完毕之后,又一次等待。
7、监控服务退出或关闭时,调用内部关闭的方法进行关闭。
……
为了更加清晰的说明整个文件文件夹的运行过程。我给大家找了一个比較好的说明文档,链接例如以下:
Java高级应用(一个)-文件夹监控服务的更多相关文章
- java+上传一个文件夹
在web项目中上传文件夹现在已经成为了一个主流的需求.在OA,或者企业ERP系统中都有类似的需求.上传文件夹并且保留层级结构能够对用户行成很好的引导,用户使用起来也更方便.能够提供更高级的应用支撑. ...
- java遍历统计一个文件夹中所有文件单词出现次数
思路就是通过递归进行文件遍历,把所有文件夹中的非目录文件都遍历一遍,并判断其中读取到的字符串是不是单词,并对单词进行记录和计数,并在最后进行排序输出,下面是代码: package word; impo ...
- 用Java实现将多级文件夹下的所有文件统一放到一个文件夹中
每次下了电影(男生懂得呦),每部电影都放在一个单独的文件夹里,看的时候很是不方便啊,一直重复着进入文件夹.后退,再进.再退的操作,而手动把这些电影全部复制出来又太繁琐.因此为了解决这个问题,用IO写了 ...
- 键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数,注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key, 用个数作为value,放入到map集合中,遍历map集合
package cn.it.zuoye5; import java.io.File;import java.util.HashMap;import java.util.Iterator;import ...
- flume监控一个linux指定的一个文件夹的文件信息
1.编辑一个配置文件 flume-app.conf 拷贝至fulme的安装目录的conf下 # The configuration file needs to define the sources, ...
- Java基础面试操作题: File IO 文件过滤器FileFilter 练习 把一个文件夹下的.java文件复制到另一个文件夹下的.txt文件
package com.swift; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
- Java遍历一个文件夹下的全部文件
Java工具中为我们提供了一个用于管理文件系统的类,这个类就是File类,File类与其它流类不同的是,流类关心的是文件的内容.而File类关心的是磁盘上文件的存储. 一,File类有多个构造器,经常 ...
- 代码实现:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名
package com.loaderman.test; import java.io.File; import java.io.FileReader; import java.util.Scanner ...
- java io流 对文件夹的操作
java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...
随机推荐
- vim修复,telnet安装启动,linux更新软件源
vim修复: 修复前提,你到UBUNTU能够联网.否则仅仅能卸载,不能安装 1.sudo apt-get remove vim-common 2.sudo apt-get install vim ...
- Qt 信号-槽的同步与异步处理
通常使用的connect,实际上最后一个參数使用的是Qt::AutoConnection类型:Qt支持6种连接方式.当中3中最主要: 1.Qt::DirectConnection(直连方式)(信号与槽 ...
- 关于DP与背包
听说过动态规划(DP)的同学应该都知道有背包问题的存在. 首先我们来了解一下动态规划 基本思想: 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中, 可能会有很多可行解.没一个解都对应于一 ...
- #import </usr/include/objc/objc-class.h> not such file or directory问题的解决方法
近期在使用一些开源的demo,打开后出现这个错误,然后能够把 #import </usr/include/objc/objc-class.h> 改动为以下 #import <objc ...
- Android的事件分发
1. Touch事件和绘制事件的异同之处 Touch事件和绘制事件非常相似,都是由ViewRoot派发下来的,可是不同之处在绘制事件是由应用中的某个View发起请求,一层一层上传到ViewRoot.再 ...
- Swift开发教程--关于Existing instance variable '_delegate'...的解决的方法
xcode编译提示问题:Existing instance variable '_delegate' for property 'delegate' with assign attribute mu ...
- arm cpu的架构及分类说明
今天在编译mplayer for mx27ads的时候, 碰到了armv5te与armv6优化的问题. 默认的交叉编译器支持armv5te也支持armv6,就默认使用了mplayer中mpeg4的ar ...
- RabbitMQ 服务
RabbitMQ 使用场景一 安装环境 1.下载安装 Erlang 运行时环境 2.下载安装 RabbitMQ Server 应用程序 3.启动 RabbitMQ 服务(默认启动) 4.安装管理平 ...
- CentOS-7-x86_64-DVD-1511.iso
http://vault.centos.org/7.2.1511/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso
- .Net Core Socket 压力测试
原文:.Net Core Socket 压力测试 .Net Core Socket 压力测试 想起之前同事说go lang写的push service单机可以到达80万连接,于是就想测试下.Net C ...