Время изменения файла в C#
Синхронизация сравнивает метки изменения, чтобы перенести только более новый файл. Метод File.GetLastWriteTimeUtc возвращает DateTime в UTC, без локального смещения.
После перезаписи файла метка обычно растет, если часы системы идут вперед. Короткая пауза между записями дает часам сдвинуться, иначе обе метки часто совпадают.
Сравним метку до и после второй записи. Обычно в консоли True: вторая запись не раньше первой по UTC. На одной метке времени возможно равенство:
string path = Path.Combine(Path.GetTempPath(), "mtime-zeta.txt");
File.WriteAllText(path, "v1");
DateTime first = File.GetLastWriteTimeUtc(path);
Thread.Sleep(5);
File.WriteAllText(path, "v2");
DateTime second = File.GetLastWriteTimeUtc(path);
Console.WriteLine(second >= first);
File.Delete(path);
Создайте во временном каталоге файлы draft.txt и final.txt. Запишите в draft.txt строку start, подождите немного, запишите в final.txt строку done и выведите True, если final.txt изменен не раньше draft.txt.