以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [注意]文件监视器的BUG  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=77315)

--  作者:黄训良
--  发布时间:2015/11/16 13:36:00
--  [注意]文件监视器的BUG

1、文件监视器没有重命名事件。

2、FileChanged事件BUG:

  除外txt文件,测试了Office文件、rar文件,不能返回触发事件的文件名,返回的是临时文件名!

三个事件FileChanged、FileDeleted、FileCreated的代码如下:

Dim dr As DataRow
dr = DataTables("表A").AddNew()
dr("FullPath") = e.FullPath
dr("FtpPath") = e.Name
dr("ChangeType") = "Changed"

见图:

 


图片点击可在新窗口打开查看此主题相关图片如下:excelchanged.png
图片点击可在新窗口打开查看

 


图片点击可在新窗口打开查看此主题相关图片如下:wordchanged.png
图片点击可在新窗口打开查看

 


图片点击可在新窗口打开查看此主题相关图片如下:rarchanged.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2015/11/16 14:26:00
--  
呃,会触发重命名和新增文件 的事件啊。
--  作者:黄训良
--  发布时间:2015/11/16 14:32:00
--  
重命名只会返回目录,没有文件名,不起作用!
--  作者:大红袍
--  发布时间:2015/11/16 14:38:00
--  
以下是引用黄训良在2015/11/16 14:32:00的发言:
重命名只会返回目录,没有文件名,不起作用!

 

不可能,会返回文件名啊

 

自己加一个重命名事件

 

全局代码

 

Public Sub watcher_Renamed(sender As object, e As System.IO.RenamedEventArgs )

  msgbox("File Renamed: Old Name: " + e.OldName + " New Name: " + e.Name)

End Sub

 

调用

 

Dim watcher As new System.IO.FileSystemWatcher()
watcher.Path = "d:\\Test"
addhandler watcher.Renamed, addressof watcher_Renamed
watcher.EnableRaisingEvents = True

 

http://www.cnblogs.com/pdfw/archive/2010/02/10/1667209.html

 


--  作者:黄训良
--  发布时间:2015/11/16 15:36:00
--  

我说的是Foxtable自带的文件监视器存在的BUG!

我自己的文件监视器已经做好!

全局代码:

Public Sub OnDeleted(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)
\'msgbox("OnChanged" & e.FullPath & "e.ChangeType:" & e.ChangeType.ToString())

End Sub

 

Public Sub OnCreated(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)
\'msgbox("OnChanged" & e.FullPath & "e.ChangeType:" & e.ChangeType.ToString())
End Sub

 

Public Sub OnRenamed(ByVal source As Object, ByVal e As System.IO.RenamedEventArgs)
\'msgbox("OnChanged" & e.FullPath & "e.ChangeType:" & e.ChangeType.ToString())
End Sub

 

Public Sub OnCreated(ByVal source As Object, ByVal e As System.IO.FileSystemEventArgs)

\'msgbox("OnChanged" & e.FullPath & "e.ChangeType:" & e.ChangeType.ToString())
End Sub

 

调用和启用:

Dim watcher As new System.IO.FileSystemWatcher()
watcher.Path = "D:\\文件监视器"
watcher.Filter = "*.*"
watcher.IncludeSubdirectories = True
addhandler watcher.Changed, addressof OnChanged
addhandler watcher.Renamed, addressof OnRenamed
addhandler watcher.Deleted, addressof OnDeleted
addhandler watcher.Created, addressof OnCreated
watcher.EnableRaisingEvents = True

 

 

[此贴子已经被作者于2015/11/16 15:44:44编辑过]