以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Dot NET,C#,ASP,VB 』  (http://bbs.xml.org.cn/list.asp?boardid=43)
----  visua basic.Net中轻易实现一个 file monitor...  (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=11786)


--  作者:admin
--  发布时间:11/9/2004 2:25:00 AM

--  visua basic.Net中轻易实现一个 file monitor...


发信人: dongy (爪黄飞电), 信区: DotNET        
标  题: visua basic.Net中轻易实现一个 file monitor...
发信站: BBS 水木清华站 (Fri May  4 02:08:08 2001)

visual basic.net 对win2k文件或文件夹的动作进行监视

使用FileSystemWatcher 类和 Microsoft .NET 的语言特性你可以很容易的监视你的系统或者网络上你有权限管理的计算机上目录里面发生的事件,比如新建目录、删除文件、修改文件等等。
你可以使用FileSystemWatcher 类来监视你的文件系统,并对它的改变作出相应的反应。这就使你的应用程序在某个特定的文件或者目录被创建、修改或者删除时做出快速准确、简便的处理成为可能。例如,设想你和你的合作伙伴们合做的文档存在你的服务器上,使用FileSystemWatcher  
类你可以很容易的作出一个应用程序来监视这个共享目录的改变,当发现改变的时候,这个类可以运行起特定的程序,通过发电子邮件的方式通知你所有的合作伙伴。
你可以配置这个类去监视一整个目录,或者这个目录里面的内容,也可以监视指定目录中的某个文件或者一系列文件。当一个文件或者目录被新建、删除、改名或者其他方式的改变的时候FileSystemWatcher  
将产生一个特定事件,这些可以监视的改变的类型包括目录或者文件的属性、大小、最后修改时间、最后访问时间和安全设置。
当你应用程序监视的文件或者目录有改变的时候,一个或多个事件将产生,首先存在缓冲区里,最后将传给你的应用程序来处理,FileSystemWatcher 类可以监视以下的改变事件

新建(Created) 新建文件或者目录时产生。
删除(Deleted) 只要文件或者目录被删除,将产生这个事件。
改名(Renamed) 只要文件或者目录被改名,将产生这个事件。
改变(Changed) 包括文件或者目录的大小改变、系统属性改变、最后修改时间改变、最后存取时间改变或者安全属性改变。

注意:虽然许多平常的操作比如拷贝或者移动文件没有和它们直接相关联的事件,这些操作同样会引起事件发生。当你拷贝文件的时候系统会在你拷贝的目标目录产生 Created  
事件,但是在你拷贝的源目录中将什么事件也不产生。当你移动文件的时候,系统会产生两个事件:一个是在你移动的源目录下的 Deleted 事件,另一个是在要移动的目的目录下得 Created 事件。
一个目录中文件的每一个改变将会产生一个独立的事件。对于单个文件来说,文件的每个改变会对应一个事件。例如:如果你在监视的目录例有五个文件并且这五个文件的安全属性突然都改变了,你将会收到五个 Changed  
事件,如果用户对每个文件进行了改名操作和改变它们安全属性的操作,那么将会收到10个事件通知-每个文件都会收到一个 Renamed 事件和一个 Changed 事件。
使用FileSystemWatcher 的局限:
你可以在运行 Windows NT 4.0 或者 Windows 2000 的机器上使用FileSystemWatcher 类。如果你用的是 Windows 95,你不能利用FileSystemWatcher 监视任何本机或者远程机器上的事件。
你可以在 Web 应用程序和 Windows 应用程序中创建FileSystemWatcher 类,但是要求和通用语言运行库(Common Language Runtime)一起编译。
  
假设你的应用程序想建立一个FileSystemWatcher 的实例以便监视在一个叫"reports"的目录里面所有建立文本文件(*.txt)的操所,同时你又想监视现存文件里面内容的变化,你可以象下面一样设置你的程序:
Dim MyWatcher As New FileSystemWatcher()
MyWatcher.Path = "c:\"
'只检测 c:\*.txt 的文件
MyWatcher.Filter = "*.txt"
'只检测文件,不关心目录和子目录
MyWatcher.Target = WatcherTarget.File
MyWatcher.IncludeSubdirectories = False
'过滤最后一次写操作
MyWatcher.ChangedFilter = ChangedFilters.LastWrite
'说明如何同时检测多个事件
MyWatcher.ChangedFilter = ChangedFilters.LastWrite BitOr ChangedFilters.Size
'让系统检测部件开始工作
MyWatcher.Enabled = True
注意:你的应用程序里必须设置FileSystemWatcher 的 Enabled 属性为真或者呼叫开始方法来开始监视所有的改变操作。  
说明:对于监视的目录既可以是标准的文件目录也可以是UNC 目录,例如:
'新建一个检测本地硬盘上 c:\MyWatcher.Path = "c:\"
MyWatcher.Path = "\\myserver\myshare\"

--

※ 修改:·dongy 於 May  4 02:10:13 修改本文·[FROM:   202.38.240.37]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.38.240.37]
上一篇
返回上一页
回到目录
回到页首
下一篇



W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms