filewatcher监视多个文件,但处理方式不同
本文关键字:处理 方式不 文件 监视 filewatcher | 更新日期: 2023-09-27 17:59:50
我需要在不同的时间观看几个文件,有时同时观看。
我用这个作为测试:
namespace FilewatcherTest
{
public partial class Form1 : Form
{
private System.IO.FileSystemWatcher FSWatcherTest;
public Form1()
{
InitializeComponent();
FSWatcherTest = new FileSystemWatcher();
EventHandling();
FSWatcherTest.Path = @"d:'tmp";
FSWatcherTest.Filter = "file.txt";
// Begin watching.
FSWatcherTest.EnableRaisingEvents = true;
}
protected void EventHandling()
{
FSWatcherTest.Changed += FSWatcherTest_Changed;
FSWatcherTest.Deleted += FSWatcherTest_Deleted;
FSWatcherTest.Renamed += FSWatcherTest_Renamed;
FSWatcherTest.Created += FSWatcherTest_Created;
}
private void FSWatcherTest_Changed(object sender, System.IO.FileSystemEventArgs e)
{
WriteToLog("File Changed");
}
private void FSWatcherTest_Created(object sender, System.IO.FileSystemEventArgs e)
{
WriteToLog("File Created");
}
private void FSWatcherTest_Deleted(object sender, System.IO.FileSystemEventArgs e)
{
WriteToLog("File Deleted");
}
private void FSWatcherTest_Renamed(object sender, System.IO.RenamedEventArgs e)
{
WriteToLog("File Renamed");
}
private void WriteToLog(string message)
{
using (var sw = new StreamWriter(@"d:'tmp'service.log", true))
{
sw.WriteLine(string.Format("{0} {1}", DateTime.Now,message));
}
}
}
}
当然,一旦我有了一些东西,我就会更改硬编码的路径,因为这将进入我创建的服务中。
我的问题是,我可以使用相同的文件观察器吗?还是应该为每个文件使用唯一的观察器?
如果我使用相同的文件,我如何知道哪个文件引发了事件?
谢谢!!
编辑很抱歉,我以前没有使用过filesystemwatcher,也不知道这很重要,但这些文件将位于不同的目录中,而不是相同的文件类型
我可以使用相同的文件查看器吗?还是应该为每个文件使用唯一的查看器?
在您的情况下,我认为没有理由为您正在观看的每个文件创建一个新的FileSystemWatcher实例。是的,你可以用同样的。您可以使用诸如"*.txt"之类的过滤器或任何您需要查看的文件集。。。
如果我使用相同的文件,我如何知道哪个文件引发了事件?
FileSystemEventArgs
具有Name
属性,该属性返回触发事件的文件的名称。例如:
private void FSWatcherTest_Created(object sender, System.IO.FileSystemEventArgs e)
{
string fileName = e.Name;
WriteToLog("File Created: " + fileName);
}