Yanıtlar:
Bu System.IO.FileSystemWatcher olacaktır .
FileSystemWatcher
Sınıfı kullanabilirsiniz .
public void CreateFileWatcher(string path)
{
// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = path;
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt";
// 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;
}
// 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);
}
OnChange
fiili değişiklik olmadan yangınlar ( örneğin: ctrl+s
gerçek bir değişiklik olmadan isabet ), sahte değişiklikleri tespit etmenin herhangi bir yolu var mı?
FileSystemWatcher
Sadece (yani OS bir olay tetikler varsa) dosya sistemi düzeyinde olaylarını tespit edebiliyor. Sizin durumunuzda Ctrl + S böyle bir olayı tetikler (bunun gerçekleşip gerçekleşmemesi gerçek uygulamaya bağlıdır).