Antworten:
Das wäre System.IO.FileSystemWatcher .
Sie können die FileSystemWatcher
Klasse verwenden.
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
Brände ohne tatsächliche Änderung ( z. B. Schlagen ctrl+s
ohne tatsächliche Änderung ). Gibt es eine Möglichkeit, gefälschte Änderungen zu erkennen?
FileSystemWatcher
einzige ist in der Lage, Ereignisse auf Dateisystemebene zu erkennen (dh wenn das Betriebssystem ein Ereignis auslöst). In Ihrem Fall löst Strg + S ein solches Ereignis aus (ob dies geschieht oder nicht, hängt jedoch von der tatsächlichen Anwendung ab).