最近,在研究一些比较成熟的框架,这其中也发现了一些比较不错的文章,现给大家简单翻译其中的一部分(强烈建议大家看一些原版的英文文章,很有帮助)。
译:原文链接
你有没有发现,当你编辑一个文件,同时使用另一个IDE或编辑器进行编辑的时候,会出现一个对话框通知"一个打开的文件的已经改变,是否需要重新加载?”。但像NetBeans IDE等一些应用程序只是静静地更新文件而没有通知你。
要实现这种"文件监控”功能,程序必须能够检测到在文件系统相关的目录中发生了什么。一种方法是检查文件系统发生了什么变化,但这种方法是低效的。它不能大规模的监控已打开的文件或目录。另一种方法是使用java.nio.file包提供一个文件监控服务。这个服务允许你为一个目录或多个目录注册监控服务。注册时,只需要告诉需要监控的事件,包括文件的创建、删除、修改。当服务监控到相应的事件之后,它就会执行注册的事件。在注册的事件会有一个用来监控已经注册的事件的线程或线程池,这样当一个注册事件发生后,它就会进行相关的处理。文件目录监控服务WatchService使用非常简单,你甚至可以自行定义。你可以直接使用它或者在原有基础之上进行扩展,以便更加适合您的特殊需要。创建一个目录监控服务的基本步骤如下:
1、创建一个文件系统监控服务-WatchService。
2、在文件系统监控服务上注册你需要监控的文件目录的。注册目录时,指定的监控的类型。
3、编写一个无限等待,监控事件发生的事件方法。以便当监控队列中的目录发生响应的事件之后,能够及时响应和终止。
4、整个监控过程的关键在于,可以从监控服务提供的监控秘钥中获取监控到的文件名称
5、监控到等待事件的发生的关键在于可以执行需要的过程。
6、事件监控完成之后,重新等待。
7、监控服务退出或关闭时,调用内部关闭的方法进行关闭。
……
为了更加清晰的说明整个文件目录的执行过程,我给大家找了一个比较好的说明文档,链接如下:
http://blog.csdn.net/cxhzqhzq/article/details/6604300