VB.Net Tutorial/Stream File/File system watcher

Материал из VB Эксперт
Перейти к: навигация, поиск

File system watcher

Imports System.IO
Imports System.Windows.Forms
public class FileSystemWatcherDemo
   public Shared Sub Main
        Application.Run(New Form1)
   End Sub
End class
Public Class Form1
    Inherits System.Windows.Forms.Form
    Public Sub New()
        MyBase.New()
        InitializeComponent()
    End Sub
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub
    Private components As System.ruponentModel.IContainer
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents Label2 As System.Windows.Forms.Label
    Friend WithEvents txtPath As System.Windows.Forms.TextBox
    Friend WithEvents txtFile As System.Windows.Forms.TextBox
    Friend WithEvents txtWatcher As System.Windows.Forms.TextBox
    Friend WithEvents Label3 As System.Windows.Forms.Label
    Friend WithEvents btnWatch As System.Windows.Forms.Button
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.Label1 = New System.Windows.Forms.Label()
        Me.Label2 = New System.Windows.Forms.Label()
        Me.txtPath = New System.Windows.Forms.TextBox()
        Me.txtFile = New System.Windows.Forms.TextBox()
        Me.txtWatcher = New System.Windows.Forms.TextBox()
        Me.Label3 = New System.Windows.Forms.Label()
        Me.btnWatch = New System.Windows.Forms.Button()
        Me.SuspendLayout()
        "
        "Label1
        "
        Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte))
        Me.Label1.Location = New System.Drawing.Point(51, 20)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(103, 16)
        Me.Label1.TabIndex = 0
        Me.Label1.Text = "File Watcher"
        "
        "Label2
        "
        Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte))
        Me.Label2.Location = New System.Drawing.Point(51, 52)
        Me.Label2.Name = "Label2"
        Me.Label2.Size = New System.Drawing.Size(103, 16)
        Me.Label2.TabIndex = 1
        Me.Label2.Text = "File Type"
        "
        "txtPath
        "
        Me.txtPath.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte))
        Me.txtPath.Location = New System.Drawing.Point(164, 16)
        Me.txtPath.Name = "txtPath"
        Me.txtPath.Size = New System.Drawing.Size(655, 23)
        Me.txtPath.TabIndex = 2
        Me.txtPath.Text = "C:\Temp\test\"
        "
        "txtFile
        "
        Me.txtFile.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte))
        Me.txtFile.Location = New System.Drawing.Point(164, 48)
        Me.txtFile.Name = "txtFile"
        Me.txtFile.Size = New System.Drawing.Size(133, 23)
        Me.txtFile.TabIndex = 3
        Me.txtFile.Text = "*.txt"
        "
        "txtWatcher
        "
        Me.txtWatcher.Location = New System.Drawing.Point(51, 104)
        Me.txtWatcher.Multiline = True
        Me.txtWatcher.Name = "txtWatcher"
        Me.txtWatcher.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
        Me.txtWatcher.Size = New System.Drawing.Size(778, 224)
        Me.txtWatcher.TabIndex = 5
        Me.txtWatcher.Text = ""
        "
        "Label3
        "
        Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte))
        Me.Label3.Location = New System.Drawing.Point(51, 80)
        Me.Label3.Name = "Label3"
        Me.Label3.Size = New System.Drawing.Size(103, 16)
        Me.Label3.TabIndex = 6
        Me.Label3.Text = "Message"
        "
        "btnWatch
        "
        Me.btnWatch.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(136, Byte))
        Me.btnWatch.Location = New System.Drawing.Point(625, 64)
        Me.btnWatch.Name = "btnWatch"
        Me.btnWatch.Size = New System.Drawing.Size(194, 32)
        Me.btnWatch.TabIndex = 7
        Me.btnWatch.Text = "Start"
        "
        "Form1
        "
        Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
        Me.ClientSize = New System.Drawing.Size(870, 357)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.btnWatch, Me.Label3, Me.txtWatcher, Me.txtFile, Me.txtPath, Me.Label2, Me.Label1})
        Me.ResumeLayout(False)
    End Sub
    Dim WithEvents FSWatcher As New FileSystemWatcher()
    Private Sub btnWatch_Click _
      (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWatch.Click
        Dim strPathWatch As String
        Dim strFileWatch As String
        strPathWatch = txtPath.Text
        strFileWatch = txtFile.Text
        FSWatcher.Path = strPathWatch
        FSWatcher.Filter = strFileWatch
        FSWatcher.IncludeSubdirectories = True
        FSWatcher.NotifyFilter = _
          NotifyFilters.LastWrite Or NotifyFilters.FileName
        FSWatcher.EnableRaisingEvents = True
        txtWatcher.Text += vbCrLf + "Start:"
    End Sub
    Private Sub FSWatcher_Changed(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FSWatcher.Changed
        WatchMessage(e.FullPath, e.ChangeType.ToString)
    End Sub
    Private Sub FSWatcher_Created(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FSWatcher.Created
        WatchMessage(e.FullPath, e.ChangeType.ToString)
    End Sub
    Private Sub FSWatcher_Deleted(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FSWatcher.Deleted
        WatchMessage(e.FullPath, e.ChangeType.ToString)
    End Sub
    Private Sub FSWatcher_Error(ByVal sender As Object, ByVal e As System.IO.ErrorEventArgs) Handles FSWatcher.Error
        WatchMessage("", e.GetException.Message)
    End Sub

    Private Sub FSWatcher_Renamed(ByVal sender As Object, ByVal e As System.IO.RenamedEventArgs) Handles FSWatcher.Renamed
        WatchMessage(e.FullPath, e.ChangeType.ToString)
    End Sub
    Private Sub WatchMessage(ByVal strpFileName As String, ByVal strpMessage As String)
        Dim strMessage As String
        strMessage =  strpFileName + " " + strpMessage
        txtWatcher.Text += vbCrLf + strMessage
    End Sub
End Class

New FileSystemWatcher(Application.StartupPath)

Imports System.Windows.Forms
Imports System.Diagnostics
Imports System.ServiceProcess
Imports System.IO
public class Test
   Private Shared WithEvents m_FileSystemWatcher As FileSystemWatcher
   public Shared Sub Main
        
        m_FileSystemWatcher = New FileSystemWatcher(Application.StartupPath)
        m_FileSystemWatcher.EnableRaisingEvents = True
   End Sub
    Private Shared Sub m_FileSystemWatcher_Created(ByVal sender As Object, ByVal e As System.IO.Fil
eSystemEventArgs) Handles m_FileSystemWatcher.Created
        Console.WriteLine(e.FullPath & " created")
    End Sub
   
End class