Vb.net 检查文件夹中的新文件

Vb.net 检查文件夹中的新文件,vb.net,filesystemwatcher,Vb.net,Filesystemwatcher,我需要监视一个文件夹,以查看何时创建新文件,然后对该文件进行处理和归档 这是我正在努力处理的新文件的实际检测…我知道我需要关注FileSystemWatcher的事情,但想知道是否有人知道它以这种方式使用的任何示例,以便让我开始 假设我的文件夹是“C:\Temp\”,我需要知道任何扩展名为“.dat”的文件一出现 很抱歉这个模糊的问题,我只是无法通过各种谷歌搜索找到我想要的东西 提前感谢您可以使用它:当目录或目录中的文件发生更改时,它会侦听文件系统更改通知并引发事件。 Imports Syste

我需要监视一个文件夹,以查看何时创建新文件,然后对该文件进行处理和归档

这是我正在努力处理的新文件的实际检测…我知道我需要关注FileSystemWatcher的事情,但想知道是否有人知道它以这种方式使用的任何示例,以便让我开始

假设我的文件夹是“C:\Temp\”,我需要知道任何扩展名为“.dat”的文件一出现

很抱歉这个模糊的问题,我只是无法通过各种谷歌搜索找到我想要的东西

提前感谢

您可以使用它:当目录或目录中的文件发生更改时,它会侦听文件系统更改通知并引发事件。

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

因此,我已经设法让它按我所希望的方式工作,并认为我会分享它,以防有人追求同样的东西

使用本指南[作为参考,我在表单中添加了一个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分钟启动一次,以完成并“处理”列表框中的条目(如果找到)。

由于您所做的只是从MSDN中复制代码,您可能至少已对其进行了修改,以更准确地应用于OP的问题。感谢Neethu Soman,但这些似乎是在寻找答案或者命令行参数。如果可能的话,我想对目录进行硬编码。你知道我将如何修改上面的内容来做到这一点吗?谢谢!你很可能会遇到此代码的问题。你的FileSystemWatcher运行在与UI不同的线程上,因此当你引用列表框时,事情可能会分开。你需要设置
同步gObject
属性来避免它。