Câu trả lời:
Đó sẽ là System.IO.FileSystemWatcher .
Bạn có thể sử dụng FileSystemWatcher
lớp học.
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
cháy mà không có thay đổi thực tế ( ví dụ: đánh ctrl+s
mà không có bất kỳ thay đổi thực tế nào ), có cách nào để phát hiện các thay đổi giả mạo không?
FileSystemWatcher
nhất có thể phát hiện các sự kiện ở cấp hệ thống tệp (tức là nếu hệ điều hành kích hoạt một sự kiện). Trong trường hợp của bạn, Ctrl + S sẽ kích hoạt sự kiện như vậy (mặc dù điều đó có xảy ra hay không phụ thuộc vào ứng dụng thực tế).