C# Получить файл последнего доступа или юзабилити

Мне нужно периодически проверять все файлы в репозитории и сравнивать его LastAccessTime, чтобы узнать, когда в последний раз использовался этот файл (доступ, изменение и / или обновление).

Я уже пробовал с File.GetLastAccessTime() и FileInfo.LastAccessTime, но я всегда получаю один и тот же DateTime после открытия / закрытия или чтения.

Как я могу узнать, когда файл был использован?

Спасибо!

string path = System.Environment.CurrentDirectory + "/testing/doc2.txt"
Console.WriteLine("--------------------------------------");
Console.WriteLine("GetLastAccessTime {0}", File.GetLastAccessTime(path));
Console.WriteLine("GetLastAccessTimeUtc {0}", File.GetLastAccessTimeUtc(path));
Console.WriteLine("Directory.GetLastAccessTime {0}", Directory.GetLastAccessTime(path));
FileInfo fi = new FileInfo(path);
Console.WriteLine("fi.LastAccessTime {0}", fi.LastAccessTime);

выход:

GetLastAccessTime           12/18/2018 11:41:15 AM
GetLastAccessTimeUtc        12/18/2018 4:41:15 PM
Directory.GetLastAccessTime 12/18/2018 11:41:15 AM
fi.LastAccessTime           12/18/2018 11:41:15 AM
--------------------------------------
GetLastAccessTime           12/18/2018 11:41:15 AM
GetLastAccessTimeUtc        12/18/2018 4:41:15 PM
Directory.GetLastAccessTime 12/18/2018 11:41:15 AM
fi.LastAccessTime           12/18/2018 11:41:15 AM

1 ответ

Самое главное, какую файловую систему вы используете. Я полагаю, это NTFS. Тогда есть несколько цитат:

Отметка времени последнего доступа к файлу - это последняя дата и время, когда этот файл был открыт для чтения или записи. Поэтому каждый раз, когда пользователь обращается к файлу, эту временную метку нужно обновлять, что немного накладно, особенно если вы не слишком заинтересованы в этом атрибуте файла. Для повышения производительности файловой системы NTFS в Windows 10 (и предыдущих версиях, начиная с Windows Vista), время последнего доступа к файлам и каталогам НЕ обновляется.

Источник здесь

Бонусная болтовня: Начиная с Windows Vista, по умолчанию отключение времени последнего доступа отключено. На практике это означает, что количество ошибок, связанных с случайным изменением времени последнего доступа, будет многократно не проверяться, поскольку механизм обнаружения ошибки по умолчанию отключен.

Источник здесь

И еще одна ссылка, где кажется, что есть еще одно поведение.

И последняя ссылка для FAT. Я не уверен, так как в последний раз я читал только описание FAT12 (дисковод гибких дисков / дискеты) много, много назад, но, вероятно, нет места для хранения времени последнего доступа в файловых системах FAT, сохраняется только дата. Я не могу подтвердить это для расширения Microsoft, предоставленного с длинными именами файлов.

Другие вопросы по тегам