Foxtable(狐表)用户栏目专家坐堂 → [注意]文件监视器的BUG


  共有3047人关注过本帖树形打印复制链接

主题:[注意]文件监视器的BUG

帅哥哟,离线,有人找我吗?
黄训良
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
[注意]文件监视器的BUG  发帖心情 Post By:2015/11/16 13:36:00 [只看该作者]

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
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/16 14:26:00 [只看该作者]

呃,会触发重命名和新增文件 的事件啊。

 回到顶部
帅哥哟,离线,有人找我吗?
黄训良
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
  发帖心情 Post By:2015/11/16 14:32:00 [只看该作者]

重命名只会返回目录,没有文件名,不起作用!

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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

 


 回到顶部
帅哥哟,离线,有人找我吗?
黄训良
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1100 积分:8985 威望:0 精华:0 注册:2014/3/15 14:36:00
  发帖心情 Post By: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编辑过]

 回到顶部