首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> VB.net >> 正文
VB.NET中监视文件夹的变化
来源:ChinaItLab 作者:佚名 时间:2007-8-16

  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】
中国IT教育热线咨询
相关文章
多线程、Socket技术及委托技术的关系
VB.Net连接各种数据库的几种方法
VB.NET中的多窗体编程:升级到 .NET…
用VB.NET定制Windows控件
VB.NET中对象的克隆
用Visual C#实现网络封包监视…
VB.NET中的TextBox控件详解
VB.NET实现PC与掌上电脑PPC的双向通信
在VB.NET编程中使用数组
在VB.NET中进行抓屏
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05