要在C#中监听文件的变化并获取文件信息,您可以使用FileSystemWatcher类。以下是一个示例,展示了如何使用FileSystemWatcher监听文件的创建、修改和删除事件,并获取文件的信息:
using System;
using System.IO;
public class FileWatcher
{
private FileSystemWatcher watcher;
public FileWatcher(string directory, string filter)
{
watcher = new FileSystemWatcher(directory, filter);
// 设置要监视的文件事件类型
watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite | NotifyFilters.Size;
// 添加事件处理程序
watcher.Created += OnFileCreated;
watcher.Changed += OnFileChanged;
watcher.Deleted += OnFileDeleted;
}
public void Start()
{
watcher.EnableRaisingEvents = true;
}
public void Stop()
{
watcher.EnableRaisingEvents = false;
}
private void OnFileCreated(object sender, FileSystemEventArgs e)
{
// 文件创建事件处理程序
Console.WriteLine($"File created: {e.Name}");
GetFileInfo(e.FullPath);
}
private void OnFileChanged(object sender, FileSystemEventArgs e)
{
// 文件修改事件处理程序
Console.WriteLine($"File changed: {e.Name}");
GetFileInfo(e.FullPath);
}
private void OnFileDeleted(object sender, FileSystemEventArgs e)
{
// 文件删除事件处理程序
Console.WriteLine($"File deleted: {e.Name}");
}
private void GetFileInfo(string filePath)
{
FileInfo fileInfo = new FileInfo(filePath);
Console.WriteLine($"File path: {fileInfo.FullName}");
Console.WriteLine($"File size: {fileInfo.Length} bytes");
Console.WriteLine($"Last modified: {fileInfo.LastWriteTime}");
}
}
使用示例:
string directory = @"C:\YourDirectory";
string filter = "*.txt";
FileWatcher fileWatcher = new FileWatcher(directory, filter);
fileWatcher.Start();
Console.WriteLine("Listening for file changes. Press any key to stop...");
Console.ReadKey();
fileWatcher.Stop();
在上述示例中,我们创建了一个FileWatcher类,它接受要监听的目录和文件筛选条件作为参数。然后,我们设置了要监视的文件事件类型,并为每个事件类型添加了相应的事件处理程序。当文件创建、修改或删除时,相应的事件处理程序将被调用,并显示文件的信息。
您可以根据自己的需求修改和扩展FileWatcher类,例如添加其他事件处理程序或过滤特定类型的文件。请注意,FileSystemWatcher类仅监听文件系统中的变化,因此要进行文件信息的获取,您需要使用FileInfo类。