VB.NET / C# 监控文件夹中文件是否被创建/删除/改名
创建 VB 或 C# 小程序来监视文件夹中文件是否被创建、改名、内容变动(文件大小变动)或删除。主要是利用 FileSystemWatcher() 函数来达到目的的。
今天这段代码稍微有些复杂,我把所有代码都复制出来了,大家直接复制粘贴就可以了。自己想提取的话,自行动手。
VB 代码
Imports System
Imports System.IO
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim m_watcher = New System.IO.FileSystemWatcher()
m_watcher.Filter = "*.*"
m_watcher.Path = "C:\temp\"
m_watcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
AddHandler m_watcher.Changed, AddressOf OnChanged
AddHandler m_watcher.Created, AddressOf OnChanged
AddHandler m_watcher.Deleted, AddressOf OnChanged
AddHandler m_watcher.Renamed, AddressOf OnRenamed
m_watcher.EnableRaisingEvents = True
End Sub
Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
MessageBox.Show("File: " & e.FullPath & " " & e.ChangeType)
End Sub
Private Shared Sub OnRenamed(source As Object, e As RenamedEventArgs)
MessageBox.Show(e.OldFullPath & " has changed name to " & e.FullPath)
End Sub
End Class
VB代码的 MessageBox 提示变动类型只显示数字,自己加个字符串替换一下即可。我这就懒的改了,自己知道什么原理就成了。
C# 代码
using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Permissions;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private System.IO.FileSystemWatcher m_watcher;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Form1 obj = new Form1();
obj.Hide();
m_watcher = new System.IO.FileSystemWatcher();
m_watcher.Filter = "*.*";
m_watcher.Path = @"C:\temp\";
m_watcher.IncludeSubdirectories = true;
m_watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
m_watcher.Created += new FileSystemEventHandler(OnChanged);
m_watcher.Deleted += new FileSystemEventHandler(OnChanged);
m_watcher.Changed += new FileSystemEventHandler(OnChanged);
m_watcher.Renamed += new RenamedEventHandler(OnRenamed);
m_watcher.EnableRaisingEvents = true;
}
public void OnChanged(object sender, FileSystemEventArgs e)
{
MessageBox.Show("File: " + e.FullPath + " " + e.ChangeType);
}
public void OnRenamed(object sender, RenamedEventArgs e)
{
MessageBox.Show(e.OldFullPath + " has changed name to " + e.FullPath);
}
}
}