File/Folder Watcher Wrapper






3.33/5 (21 votes)
Mar 23, 2004
1 min read

103815

1073
Easy implmentation of folder watcher class, by wrapping the logic and events.
Introduction
So you want to watch a folder for file changes? So, why not use the built in .NET file watcher class? It's extremely easy to use and implement. Only one problem: every time you need this functionality, you tend to write all the code all over again. So I thought: why not wrap the file watcher functionality and then just reuse the wrapper class.
Design of the Wrapper Class
The wrapper class contains all that is needed to watch a folder for changes:
- it monitors changes / deletion / addition / renaming of files & folders
- a filter can be supplied to only monitor a certain group of files, e.g.: *.txt.
- you can start or stop the watcher on command.
The watcher also wraps the events fired by the .NET file watcher and fires a single event for all different types of file changes. This event uses the event arguments class: FileWatcherEventArgs
. This class contains the filename, path, old filename (for renaming), old path (for renaming) and a change type. The change type is useful for monitoring what type of change occurred. It is an enum
:
public enum fileWatcherChangeType
{
fileAdded,
fileDeleted,
fileRenamed,
filechanged
}
How to use the code
It's very easy. Add the file FileWatcher.cs to your project. Add the code "using Utils;
" and that's it! Here is an example of some form code of how to use the class:
private void button1_Click(object sender, System.EventArgs e)
{
Utils.FileWatcher fw = new Utils.FileWatcher(@"c:\test");
fw.StartWatcher();
fw.Changed += new Utils.FileWatcher.ChangedEventHandler(showChange);
}
private void showChange(object source, Utils.FileWatcherEventArgs e)
{
MessageBox.Show(e.ChangeType.ToString() + " " + e.FileName);
}
There is also a public method destroyWatcher
which stops the current file watcher.
Conclusion
That's it! Very basic and easy to implement. Enjoy