如何在不更改最后写入日期的情况下从c#代码保存文件?

时间:2018-08-02 13:08:11

标签: c# filesystemwatcher

我有一个包含文件的目录,并且我的程序(在C#中)可以更改这些文件。如果有手动更改,则需要立即重新加载程序。

我想在目录中设置FileSystemWatcher,但是我无法确定何时对程序或其他方式进行更改。

我这样做是为了让我的程序将所有更改的文件设置为一个特定日期(例如2000年1月1日),当事件在“ watcher.Changed”中触发时,我可以看到该日期。

private static void WatcherOnChanged(object sender, FileSystemEventArgs fileSystemEventArgs)
    {
        var currentDate = File.GetLastWriteTime(fileSystemEventArgs.FullPath);
        if (currentDate != new DateTime(2000, 1, 1))
        {
            Console.WriteLine($"changed {fileSystemEventArgs.FullPath}");

        }
    }

事件发生在File.SetLastWriteTime(file, new DateTime(2000, 1, 1));

之前

也许时机不好?如何解决计时问题?

1 个答案:

答案 0 :(得分:3)

详细说明:

您说的问题是,您无法确定FileSystemWatcher的事件是由用户或程序所做的更改(“手动更改”)触发的。

由于您可能确实控制了程序修改这些文件的位置,因此每次修改内容时,您都可以跟踪文件中修改过的文件,例如Set<string>

然后,在OnChanged事件触发时,如果文件名在该集合中,则将其从集合中丢弃并忽略该事件。