如何将C#中的文件写入FileSystemWatcher监视的文件夹路径?
我的fileSystemWatcher设置如下:
public FileSystemWatcher CreateAndExecute(string path)
{
Console.WriteLine("Watching " + path);
//Create new watcher
FileSystemWatcher fileSystemWatcher = new FileSystemWatcher();
fileSystemWatcher.Path = path;
fileSystemWatcher.IncludeSubdirectories = false;
fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite |
NotifyFilters.FileName | NotifyFilters.DirectoryName;
fileSystemWatcher.Filter = "*.txt";
fileSystemWatcher.Changed += new FileSystemEventHandler(OnChange);
fileSystemWatcher.InternalBufferSize = 32768;
//Execute
fileSystemWatcher.EnableRaisingEvents = true;
}
private void OnChange(object source, FileSystemEventArgs e)
{
//Replace modified file with original copy
}
我想在文件发生未经授权的写入(程序外)时,用数据库中的备份副本替换修改后的文件内容。
但是,当我使用File.WriteAllText()写入修改后的文件时,它会触发FileSystemWatcher的Change事件,因为操作再次注册为write。
这会导致程序在覆盖刚刚编写的文件的无限循环中运行。
如何使用备份副本替换修改后的文件,而不会触发FileSystemWatcher要写入的其他事件?
答案 0 :(得分:7)
除了您可以通过使用操作系统文件安全性f.e.以更好/不同的方式解决问题之外,您还有一些选择: