Feb 8
2010
Written by Robert Greiner | posted in Programming | View Comments
.NET’s FileSystemWatcher class can soothe the paranoid control freak in all of us by monitoring a specified folder for different types of file system changes.
using System;
using System.Text;
using System.IO;
namespace FolderWatcher {
class Watcher {
static void Main(string[] args) {
FileSystemWatcher watcher = new FileSystemWatcher(@"D:\test");
watcher.IncludeSubdirectories = true;
watcher.Filter = "";
watcher.Renamed += new RenamedEventHandler(renamed);
watcher.Deleted += new FileSystemEventHandler(changed);
watcher.Changed += new FileSystemEventHandler(changed);
watcher.Created += new FileSystemEventHandler(changed);
watcher.EnableRaisingEvents = true;
Console.ReadKey();
}
private static void renamed(object sender, RenamedEventArgs e) {
Console.WriteLine(DateTime.Now + ": " +
e.ChangeType + " " + e.FullPath);
}
private static void changed(object sender, FileSystemEventArgs e) {
Console.WriteLine(DateTime.Now + ": " +
e.ChangeType + " " + e.FullPath);
}
}
}
FileSystemWatcher watcher = new FileSystemWatcher(@"D:\test");
The core of is application is .NET’s FileSystemWatcher class which monitors directories for file system changes.
watcher.IncludeSubdirectories = true; watcher.Filter = "";
Tells the FileSystemWatcher object to include changes in subdirectories and raise events on every type of file.
An empty string for the filter will match every file and folder in the watched directory. File types and names can also be added to the filter to create a more fine grained watch.
watcher.Renamed += new RenamedEventHandler(renamed); watcher.Deleted += new FileSystemEventHandler(changed); watcher.Changed += new FileSystemEventHandler(changed); watcher.Created += new FileSystemEventHandler(changed);
Sets the types of file system events the FileSystemWatcher object will respond to. The four possible (and self-explanatory) events are: Renamed, Deleted, Changed, and Created. Each EventHandler takes the method to be executed on that particular event as a paramater in its constructor.
watcher.EnableRaisingEvents = true;
The final piece of the puzzle is to finally tell the FileSystemWatcher to start raising events on the specified directory. Once this statement is executed, we will have a live directory watcher.
I wrote this code as a proof of concept for a new project I am working on. My goal is to create a simple/straightforward directory monitor that anyone can get and start using with very minimal effort.
I like it! I thought wrote a similar article before. It should be worth noting that you can use the Filter property to define a single file to watch.
As an aside, one important thing I learned is that Excel totally hides from the Changed event and instead makes use of Renamed when you save a file. (Plus opens the file without sharing, but that’s a whole other story.)
Thanks. I added some more about the filtering.
I didn’t know that about Excel, thanks for pointing it out.
Using .NET to Monitor a Directory for Changes | Creating Code…
Using C# and .NET to create directory monitoring application. You will be notified of any changes made to a directory including: new, modified, moved, and deleted files….
Thanks. I added some more about the filtering.
I didn’t know that about Excel, thanks for pointing it out.
Thanks. I added some more about the filtering.
I didn’t know that about Excel, thanks for pointing it out.
hat makes the breadcrumbs transient, and you must not use transient attributes or behavior as (parts of) persistent identifiers, like URIs.