我需要监控文件夹以查看何时创建新文件,然后处理文件然后存档。
它实际检测到的新文件我正在努力...我明白我需要查看FileSystemWatcher的事情,但是想知道是否有人知道它的使用方法有这样的方式来获取我开始了?
说我的文件夹是" C:\ Temp \",我需要知道任何带有" .dat"的文件。扩展名出现。
对于这个含糊不清的问题,我很抱歉,我只是找不到我在各种谷歌搜索中寻找的内容。
提前致谢
答案 0 :(得分:4)
您可以使用FileSystemWatcher Class:它监听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件。
Imports System
Imports System.IO
Imports System.Diagnostics
Public watchfolder As FileSystemWatcher
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
watchfolder = New System.IO.FileSystemWatcher()
watchfolder.Path = "d:\pdf_record\"
watchfolder.NotifyFilter = IO.NotifyFilters.DirectoryName
watchfolder.NotifyFilter = watchfolder.NotifyFilter Or _
IO.NotifyFilters.FileName
watchfolder.NotifyFilter = watchfolder.NotifyFilter Or _
IO.NotifyFilters.Attributes
AddHandler watchfolder.Changed, AddressOf logchange
AddHandler watchfolder.Created, AddressOf logchange
AddHandler watchfolder.Deleted, AddressOf logchange
AddHandler watchfolder.Renamed, AddressOf logrename
watchfolder.EnableRaisingEvents = True
End Sub
Private Sub logchange(ByVal source As Object, ByVal e As _
System.IO.FileSystemEventArgs)
If e.ChangeType = IO.WatcherChangeTypes.Changed Then
MsgBox("File " & e.FullPath & _
" has been modified" & vbCrLf)
End If
If e.ChangeType = IO.WatcherChangeTypes.Created Then
MsgBox("File " & e.FullPath & _
" has been created" & vbCrLf)
End If
If e.ChangeType = IO.WatcherChangeTypes.Deleted Then
MsgBox("File " & e.FullPath & _
" has been deleted" & vbCrLf)
End If
End Sub
Public Sub logrename(ByVal source As Object, ByVal e As _
System.IO.RenamedEventArgs)
MsgBox("File" & e.OldName & _
" has been renamed to " & e.Name & vbCrLf)
End Sub
答案 1 :(得分:0)
所以我设法让这个工作得到我想要的方式,并想到我会分享它,因为任何人都有同样的事情。
使用本指南[http://www.dreamincode.net/forums/topic/150149-using-filesystemwatcher-in-vbnet/]作为参考,我在表单中添加了一个FileSystemWatcher组件。
我使用以下内容对我要监控的目录进行硬编码:
Public Sub agent_Shown(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Shown
Fsw1.Path = "C:\temp"
End Sub
我使用以下内容将创建的文件的完整路径添加到列表框...
Private Sub fsw1_Created(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles Fsw1.Created
listbox_PendingJobs.Items.Add(e.FullPath.ToString)
End Sub
这在检测文件夹中的新文件方面完全符合我的要求。 现在我要放弃一个后台工作人员,每隔5分钟由一个计时器开始工作,然后“处理”列表框中的条目(如果找到的话)。