Вопрос

каждый раз, когда я создаю объект FileInfo и получаю доступ к его свойству lastaccesstime, всегда остается несколько минут. окно свойств файла остается постоянным, однако приложение показывает, что оно обычно через несколько минут после времени окна свойств.

Кроме того, я заметил, что если я перетаскиваю файл в окно cmd, чтобы передать имя файла в качестве аргумента, время доступа обновляется большую часть времени, но не всегда.

Что может быть причиной этого?

ниже приведен пример:

static void Main(string[] args)
{
    if (args.Length > 0)
    {
        FileInfo fi = new FileInfo(args[0].ToString());
        Console.WriteLine(args[0]);
        if (fi.Exists)
        {
            Console.Write("Current: " + DateTime.Now + "\n");
            Console.Write("LAT: " + fi.LastAccessTime + "\n");
            Console.Write("LWT: " + fi.LastWriteTime + "\n");
            Console.Write("CT: " + fi.CreationTime + "\n");
        }
        Console.ReadKey();
    }
}

alt text http://img407.imageshack.us/img407/4728/propertiesox6 .png альтернативный текст http://img380.imageshack.us/img380/7752/appgt0.png

Это было полезно?

Решение

По моему опыту, время последнего доступа, как известно, ненадежно. Согласно http://technet.microsoft.com/en-us/library/ cc781134.aspx ...

  

Время последнего доступа на диске не всегда актуально, поскольку NTFS ищет интервал в один час перед принудительным обновлением времени последнего доступа к диску. NTFS также задерживает запись времени последнего доступа на диск, когда пользователи или программы выполняют операции только для чтения с файлом или папкой, например, выводят содержимое папки или читают (но не изменяют) файл в папке.

Очевидно, что копия в памяти будет правильной, но по моему опыту вы можете получить кэшированное значение, которое может быть устаревшим. Также обратите внимание, что время последнего доступа может быть отключено пользователем и отключено по умолчанию в Vista и 2008.

Другие советы

Статья MSDN с базовой информацией о времени файлов имеет это сказать о разрешении времени файла и времени последнего доступа:

  

Например, в FAT время создания имеет разрешение 10 миллисекунд, время записи имеет разрешение 2 секунды, а время доступа имеет разрешение 1 день (в действительности, дата доступа). NTFS задерживает обновление до последнего времени доступа к файлу до одного часа после последнего доступа.

Это подразумевает, что как в FAT, так и в NTFS время последней записи, как правило, будет не очень точным, хотя я не уверен, что точные значения, которые они указывают, верны.

Хм, возможно, это из MSDN :

  

При первом вызове FileSystemInfo   вызывает Refresh и возвращает кешированный   информация об API для получения атрибутов   и так далее. При последующих звонках вы   необходимо позвонить Обновить, чтобы получить последнюю   копия информации.

Но вы видите, что LAT всегда на несколько минут в [будущем | прошлом]?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top