若只是监视文件夹下的 文件数目、名称是否有改变的话 很容易。若要检测文件夹下文件内容是否被改动,就需要检测所有文件的修改日期了。先来个检测文件夹下名称、数量的吧。
我们提供的服务有:成都网站设计、做网站、微信公众号开发、网站优化、网站认证、凌云ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的凌云网站制作公司
在VB中要实现查找文件功能,我们可以利用VB的DIR函数进行递归来实现。每次使用DIR函数后,比较是否有要查找的文件,再检查是否有子目录,若有,利用递归继续查找,这样可对整个盘进行查找。
下面是一个例子,查找DOS目录下的所有EXE文件,统计EXE文件的数目并列出文件名。本程序会查找当前路径下的所有文件和子目录,与WIN95的“包含子文件夹”的查找功能类似。
程序与注释如下:
1.在窗体中加一命令按钮Command1,Caption=查找示例,双击此按钮,写如下代码:
Private Sub Command1_Click()
Dim ff() As String '定义一个字符串数组用来保存找到的文件名称
Dim fn As Long '保存找到的文件数目
fn=TreeSearch("C:%%dos","*.exe",ff())
Print "找到文件数目为" fn
For I=1 To fn
Print ff(I)
Next
End Sub
2.插入一模块Modulel.bas,写如下代码:
Option Explicit
Public Function TreeSearch(ByVal sPath As String,ByVal sFileSpec As String,sFiles() As String) As Long
Static 1Files As Long '文件数目
Dim sDir As String
Dim sSubDirs() As String '存放子目录名称
Dim 1Index As Long
If Right(sPath,1)"%%" Then sPath=sPath "%%"
sDir=Dir(sPath sFileSpec)
'获得当前目录下文件名和数目
Do While Len(sDir)
1Files=1Files+1
ReDim Preserve sFiles(1 To 1Files)
sFiles(1Files)=sPath sDir
sDir=Dir
Loop
'获得当前目录下的子目录名称
1Index=0
sDir=Dir(sPath "*.*",16)
Do While Len(sDir)
If Left(sDir,1)"." Then 'skip.and..
'找出子目录名
If GetAttr(sPath sDir)And vbDirectory Then
1Index=lIndex+1
'保存子目录名
Redim Preserve sSubDirs(1 To 1Index)
sSubDirs(1Index)=sPath sDir "%%"
End If
End If
sDir=dir
Loop
For 1Index=1 To 1Index
'查找每一个子目录下文件,这里利用了递归
Call TreeSearch(sSubDirs(1Index),sFileSpec,sFiles())
Next 1Index
TreeSearch=1Files
End Function
3.保存文件,按F5运行,单击命令按钮即可。
我给个思路,觉得可以望采纳!
用定时器定时监听,定时器事件执行频率看需求,获得文件列表和记录文件列表名称不难。
获得文件列表做下对比就行。
楼主你好,我测试了一下OK的,想了挺长时间的
代码如下
控件.filelistbox
Dim
sua
As
Integer
'sua是存放上次的文件数的,所以必须为通用,静态,不然会丢失
Private
Sub
Form_Load()
File1.FileName
=
App.Path
"\"
"新建文件夹"
'这里写你的那个什么数据库的地址
For
i
=
To
File1.ListCount
-
1
'循环我就不说了吧
If
Right(File1.List(i),
4)
=
".txt"
Then
sua
=
sua
+
1
'在加载的时候
先算出文件夹里德文件数,这是sua的第一次赋值(即文件夹文件数)
Next
i
End
Sub
Private
Sub
监视_Click()
File1.Refresh
'每次按下去
都要先刷新一次,因为这样的话就可以更新文件数了
For
i
=
To
File1.ListCount
-
1
If
Right(File1.List(i),
4)
=
".txt"
Then
s
=
s
+
1
'这里是算出
后缀是.txt的文件数
Next
i
If
s
sua
Then
MsgBox
"文件更新了"
'判断
文件数是否
大于上一次的,,第一次按下按钮的时候
上一次
就是加载时候的文件数啦~
sua
=
s
'在判断后
将s(这次的文件数)赋值给sua
那么在下次的上一句里sua
值就是
你这次的
值啦(储存s)
End
Sub
如果有什么问题的话
hi我好了
楼上所说的也就是所谓的目录监视器吧?用API可以完成此任务,不用什么TIMER就行。
用API(FindFirstChangeNotification)然后建立一个等待事件内核对象,当有事件发生时等待成功,这时你可以进行你想要的操作。
在VB中的API的用法需要你自己探索,我是VC用的好一点,VB不怎么会用。