63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Security.Permissions;
|
|
|
|
public class Watcher
|
|
{
|
|
|
|
public static void Main()
|
|
{
|
|
Run();
|
|
Console.ReadKey();
|
|
}
|
|
|
|
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
|
|
public static void Run()
|
|
{
|
|
string[] args = System.Environment.GetCommandLineArgs();
|
|
|
|
// If a directory is not specified, exit program.
|
|
if (args.Length != 2)
|
|
{
|
|
// Display the proper way to call the program.
|
|
Console.WriteLine("Usage: Watcher.exe (directory)");
|
|
return;
|
|
}
|
|
|
|
// Create a new FileSystemWatcher and set its properties.
|
|
FileSystemWatcher watcher = new FileSystemWatcher();
|
|
watcher.Path = args[1];
|
|
/* Watch for changes in LastAccess and LastWrite times, and
|
|
the renaming of files or directories. */
|
|
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
|
|
watcher.Filter = "*";
|
|
watcher.IncludeSubdirectories = true;
|
|
|
|
// Add event handlers.
|
|
watcher.Changed += new FileSystemEventHandler(OnChanged);
|
|
watcher.Created += new FileSystemEventHandler(OnChanged);
|
|
watcher.Deleted += new FileSystemEventHandler(OnChanged);
|
|
watcher.Renamed += new RenamedEventHandler(OnRenamed);
|
|
|
|
// Begin watching.
|
|
watcher.EnableRaisingEvents = true;
|
|
|
|
// Wait for the user to quit the program.
|
|
Console.WriteLine("Press \'q\' to quit the sample.");
|
|
while (Console.Read() != 'q') ;
|
|
}
|
|
|
|
// Define the event handlers.
|
|
private static void OnChanged(object source, FileSystemEventArgs e)
|
|
{
|
|
// Specify what is done when a file is changed, created, or deleted.
|
|
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
|
|
}
|
|
|
|
private static void OnRenamed(object source, RenamedEventArgs e)
|
|
{
|
|
// Specify what is done when a file is renamed.
|
|
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
|
|
}
|
|
}
|