以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  文件监视器文件创建后触发事件问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179637)

--  作者:xnsiwei
--  发布时间:2022/9/1 9:08:00
--  文件监视器文件创建后触发事件问题
文件监视器文件创建后触发事件问题
文件创建以后自动把文件名和文件信息写入数据库

1.下载一个叫”测试文件.txt“的文件,下载完毕后写入数据库的文件的后缀名却为“测试文件.txt.crdownload”

然后弹出错误提示:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:文件监视器,FileCreated
详细错误信息:
未能找到文件“D:\\123\\测试文件.txt.crdownload”。

但实际上“D:\\123\\测试文件“已经存在

2.直接粘贴复制的文件触发没有问题

有解决办法吗?



[此贴子已经被作者于2022/9/1 9:20:31编辑过]

--  作者:有点蓝
--  发布时间:2022/9/1 9:27:00
--  
判断一下文件扩展名,如果是.crdownload就不处理
--  作者:xnsiwei
--  发布时间:2022/9/1 11:12:00
--  
经测试,判断后缀名后也不能把新下载的文件路径写入数据库,能否有判断下载完后的文件的方式吗?
看来问题就在只能判断触发为下载完的临时文件,下载完后的正式的文件不能触发
数据库路径多了一个”sync.ffs_lock“文件
 
正常的复制粘贴没有问题
请版主指教!
[此贴子已经被作者于2022/9/1 11:37:10编辑过]

--  作者:有点蓝
--  发布时间:2022/9/1 11:35:00
--  
没有下载完毕,文件名就是“测试文件.txt.crdownload”
下载完,文件名就是“测试文件.txt”

如果FileCreated监视不到“测试文件.txt”,那就到FileChanged事件处理

--  作者:xnsiwei
--  发布时间:2022/9/1 11:56:00
--  
转到FileChanged事件处理后,提示错误,不能找到文件


--  作者:有点蓝
--  发布时间:2022/9/1 11:58:00
--  
不可能不存在的,代码应该用错了。

e.FullPath才是触发事件的文件

--  作者:xnsiwei
--  发布时间:2022/9/1 16:12:00
--  
代码如下:请指教
Dim r As Row = Tables("文档汇总").addnew \'表增加新行
Dim ifo As New FileInfo(e.FullPath)
If ifo.Extension = ".crdownload" Then
Else
    r("路径") = e.FullPath \'文件名及路径赋值到对应列
    r("文件名") = FileSys.GetName(e.Name) \'获取去掉路径的文件名赋值到对应列
    r("创建时间") = ifo.CreationTime
    r("最后修改时间") = ifo.LastWriteTime
    r("文件大小") = ifo.Length
    r("文件类型") = ifo.Extension
    DataTables("文档汇总").Save()
End If
[此贴子已经被作者于2022/9/1 16:13:19编辑过]

--  作者:有点蓝
--  发布时间:2022/9/1 16:17:00
--  
调试

Dim r As Row = Tables("文档汇总").addnew \'表增加新行
msgbox(e.FullPath)
Dim ifo As New FileInfo(e.FullPath)
msgbox(ifo.Extension)
If ifo.Extension = ".crdownload" Then
Else
msgbox(r("路径"))
    r("路径") = e.FullPath \'文件名及路径赋值到对应列
msgbox(r("路径"))
msgbox(e.Name)
    r("文件名") = FileSys.GetName(e.Name) \'获取去掉路径的文件名赋值到对应列
msgbox(r("文件名"))
[此贴子已经被作者于2022/9/1 16:17:12编辑过]

--  作者:xnsiwei
--  发布时间:2022/9/1 16:42:00
--  
1、FileChanged事件处理

经测试,文件名列只得到了目录名

2、FileChanged事件处理
经测试,只增加了一行,各列均未赋值
[此贴子已经被作者于2022/9/1 16:45:08编辑过]

--  作者:有点蓝
--  发布时间:2022/9/1 17:05:00
--  
那就合并文件名呀

Dim ifo As New FileInfo(e.FullPath & “\\” & e.Name)
msgbox(ifo.Extension)