using System.IO;
// file system watcher object.
private FileSystemWatcher watcher;
private delegate void UpdateWatchTextDelegate( string newText);
public void UpdateWatchText( string newText)
{
lblWatch.Text = newText;
}
public Form1()
{
InitializeComponent();
this .watcher = new FileSystemWatcher();
this .watcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
this .watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
this .watcher.Changed += new FileSystemEventHandler(watcher_Changed);
this .watcher.Created += new FileSystemEventHandler(watcher_Created);
}
void watcher_Created( object sender, FileSystemEventArgs e)
{
// throw new NotImplementedException();
try
{
StreamWriter sw = new StreamWriter( " c://Log.txt " , true );
sw.WriteLine( " File: {0} Created " , e.FullPath);
sw.Close();
this .BeginInvoke( new UpdateWatchTextDelegate(UpdateWatchText), " Wrote create event to log " );
}
catch (IOException)
{
this .BeginInvoke( new UpdateWatchTextDelegate(UpdateWatchText), " Error Writing to log " );
}
}
void watcher_Changed( object sender, FileSystemEventArgs e)
{
// throw new NotImplementedException();
try
{
StreamWriter sw = new StreamWriter( " c://Log.txt " , true );
sw.WriteLine( " File: {0} {1} " , e.FullPath, e.ChangeType.ToString());
sw.Close();
this .BeginInvoke( new UpdateWatchTextDelegate(UpdateWatchText), " Wrote change event to log " );
}
catch (IOException)
{
this .BeginInvoke( new UpdateWatchTextDelegate(UpdateWatchText), " Error Writing to log " );
}
}
void watcher_Renamed( object sender, RenamedEventArgs e)
{
// throw new NotImplementedException();
try
{
StreamWriter sw = new StreamWriter( " c://Log.txt " , true );
sw.WriteLine( " File renamed from {0} to {1} " , e.OldName, e.FullPath);
sw.Close();
this .BeginInvoke( new UpdateWatchTextDelegate(UpdateWatchText), " Wrote renamed event to log " );
}
catch (IOException)
{
this .BeginInvoke( new UpdateWatchTextDelegate(UpdateWatchText), " Error Writing to log " );
}
}
void watcher_Deleted( object sender, FileSystemEventArgs e)
{
// throw new NotImplementedException();
try
{
StreamWriter sw = new StreamWriter( " c://Log.txt " , true );
sw.WriteLine( " File: {0} Deleted " , e.FullPath);
sw.Close();
this .BeginInvoke( new UpdateWatchTextDelegate(UpdateWatchText), " Wrote delete event to log " );
}
catch (IOException)
{
this .BeginInvoke( new UpdateWatchTextDelegate(UpdateWatchText), " Error Writing to log " );
}
}
private void cmdBrowse_Click( object sender, EventArgs e)
{
if (FileDialog.ShowDialog() != DialogResult.Cancel)
{
txtLocation.Text = FileDialog.FileName;
cmdWatch.Enabled = true ;
}
}
private void cmdWatch_Click( object sender, EventArgs e)
{
watcher.Path = Path.GetDirectoryName(txtLocation.Text); // 監控路徑(檔案夾)
watcher.Filter = " *.* " ; // 如果filter為檔案名稱則表示監控該檔案,如果為*.txt則表示要監控指定目錄當中的所有.txt檔案
watcher.NotifyFilter = NotifyFilters.LastWrite |
NotifyFilters.FileName |
NotifyFilters.Size;
lblWatch.Text = " Watching " + txtLocation.Text;
// begin watching.
watcher.EnableRaisingEvents = true ;
}