我需要監視一個文件夾以查看何時創建新文件,然後處理該文件並將其存檔。檢查文件夾中的新文件
它的實際檢測新文件,我正在努力...我明白,我需要在看FileSystemWatcher的東西,但想知道是否有人知道它的用法的任何例子,以這種方式讓我開始了嗎?
說我的文件夾是「C:\ Temp \」,我需要知道任何帶有「.dat」擴展名的文件。
對不起,模糊的問題,我只是沒有能夠找到我正在尋找與各種谷歌搜索。
在此先感謝
我需要監視一個文件夾以查看何時創建新文件,然後處理該文件並將其存檔。檢查文件夾中的新文件
它的實際檢測新文件,我正在努力...我明白,我需要在看FileSystemWatcher的東西,但想知道是否有人知道它的用法的任何例子,以這種方式讓我開始了嗎?
說我的文件夾是「C:\ Temp \」,我需要知道任何帶有「.dat」擴展名的文件。
對不起,模糊的問題,我只是沒有能夠找到我正在尋找與各種谷歌搜索。
在此先感謝
您可以使用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
所以我設法得到這個工作,我怎麼想和揣摩櫃面同樣的事情後,有人是有史以來我會分享它。
使用本指南[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分鐘的時間間隔通過計時器啓動並處理列表框中的條目(如果找到)。
您很可能在使用此代碼時遇到問題。您的FileSystemWatcher運行在與UI不同的線程上,因此當您引用ListBox時,事情可能會分崩離析。你需要設置'SynchronizingObject'屬性來避免它。 – Plutonix 2014-09-24 16:32:57
由於您所做的只是從MSDN複製代碼,您可能已*至少*修改它以更準確地應用於OP的問題。 – Plutonix 2014-09-24 12:33:21
感謝Neethu Soman,但這些似乎正在尋找命令行參數。如果可能,我想對目錄進行硬編碼。 你知道我會如何修改上述內容嗎? 謝謝! – John 2014-09-24 13:07:17
現在試試這個更新的代碼,我出去了。 – 2014-09-24 13:20:37