检查文件夹中的新文件

时间:2014-09-24 11:05:29

标签: vb.net filesystemwatcher

我需要监控文件夹以查看何时创建新文件,然后处理文件然后存档。

它实际检测到的新文件我正在努力...我明白我需要查看FileSystemWatcher的事情,但是想知道是否有人知道它的使用方法有这样的方式来获取我开始了?

说我的文件夹是" C:\ Temp \",我需要知道任何带有" .dat"的文件。扩展名出现。

对于这个含糊不清的问题,我很抱歉,我只是找不到我在各种谷歌搜索中寻找的内容。

提前致谢

2 个答案:

答案 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分钟由一个计时器开始工作,然后“处理”列表框中的条目(如果找到的话)。