c # Получить файл последнего доступа или юзабилити - PullRequest
0 голосов
/ 18 декабря 2018

Мне нужно периодически проверять все файлы в репозитории и сравнивать его 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 Ответ

0 голосов
/ 19 декабря 2018

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

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

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

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

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

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

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

...