|
Demo:
新建一个project,选择windows 服务类型,命名为WinServiceFileWatching,我们看到project的引用中自动添加了System.ServiceProcess名空间(这就是创建一个服务的函数集)。从工具中的组件中选择FileSystemWatcher1,拖放到service1的设计模式上,然后设置如下属性:
| Filter |
获取或设置筛选字符串,用于确定在目录中监视哪些文件。 我们设置为*.*,即所有文件 |
| IncludeSubdirectories |
获取或设置一个值,该值指示是否监视指定路径中的子目录。 设置为true |
| Path |
获取或设置要监视的目录的路径 设置为我们要监视的对象,比如C:\DonnetData |
然后添加以下代码:
Protected Overrides Sub OnStart(ByVal args() As String)
' 在此处添加启动服务的代码。此方法应设置具体的操作
' 以便服务可以执行它的工作。
FileSystemWatcher1.EnableRaisingEvents = True
' 我们也可以根据输入的参数args动态设定要监视的对象
'FileSystemWatcher1.path= args(0)
End Sub
' 创建文件(夹)时候触发,记录创建信息到e:\log.txt中
Private Sub FileSystemWatcher1_Created(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Created
Dim fs As New FileStream("e:\log.txt", FileMode.Append)
Dim sw As New StreamWriter(fs)
sw.WriteLine(Now() & Microsoft.VisualBasic.vbTab & "创建" & e.FullPath)
sw.Close()
fs.Close()
End Sub
' Rename文件(夹)时候触发,记录创建信息到e:\log.txt中
Private Sub FileSystemWatcher1_Renamed(ByVal sender As Object, ByVal e As System.IO.RenamedEventArgs) Handles FileSystemWatcher1.Renamed
Dim fs As New FileStream("e:\log.txt", FileMode.Append)
Dim sw As New StreamWriter(fs)
sw.WriteLine(Now() & Microsoft.VisualBasic.vbTab & "重命名" & e.OldFullPath & "-" & e.FullPath)
sw.Close()
fs.Close()
End Sub
' 删除文件(夹)时候触发,记录创建信息到e:\log.txt中
Private Sub FileSystemWatcher1_Deleted(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Deleted
Dim fs As New FileStream("e:\log.txt", FileMode.Append)
Dim sw As New StreamWriter(fs)
sw.WriteLine(Now() & Microsoft.VisualBasic.vbTab & "删除" & e.FullPath)
sw.Close()
fs.Close()
End Sub
到目前为止,这个服务已经写好了,下面作一个安装程序:
在service的设计模式上点击右键,选择添加安装程序。系统会自动添加一个类ProjectInstaller,设计模式上有一个ServiceProcessInstaller1 和ServiceInstaller1。设置ServiceInstaller1的Display Name为File Watching Service,starttype为Automatic,表示自动启动。设置ServiceProcessInstaller1 的account为LocalSystem。
由于服务是不能运行的,我们选择生成解决方案。
最后安装我们的服务:
.NET Framework自带了一个工具,InstallUtil,使用很简单InstallUtil c:\winservicefilewatching\bin\winservicefilewatching.exe ' 刚才编译好的程序的路径。这样就安装好了,Uninstall也很容易。首先SCM中关闭服务,InstallUtil/u c:\...\winservicefilewatching.exe 'the same path
这样在系统的services中就会多出一个服务,显示为File Watching Service,选择启动就可以开始监视...
总结:
在.NET创建的服务中调用System.IO.FileSystemWatcher对象,每次被监视的文件或者文件夹变化的时候,调用IO系统的FileStream和StreamWriter把变更信息写到log文件中。实际上利用了.NET强大的内置集成功能,把复杂的文件简单话。 上一页 [1] [2]
 【责编:Youping】 |